At the moment, I have an object similar to the one below.
public class DataField implements JSONable
{
public final String name;
public final Class<?> typeClass;
private Object data;
public <T> DataField(String name, Class<T> typeClass)
{
this.name = name;
this.typeClass = typeClass;
data = null;
}
public <T> T getData(Class<T> passClass)
{
if(!typeClass.equals(passClass))
throw new TypeMismatchException("Type mismatch");
return passClass.cast(data);
}
public <T> T setData(T obj, Class<T> passClass)
{
if(!typeClass.equals(passClass))
throw new TypeMismatchException("Type mismatch");
data = (Object) obj;
}
public String toJSON()
{
StringBuilder sb = new StringBuilder();
switch(type)
{
case "myPackage.DataField":
if(isArray)
return TakesADataObjOrCollectionOfDataObjs(sb,Arrays.asList(get(DataObj[].class)));
else
return TakesADataObjOrCollectionOfDataObjs(sb,get(DataObj.class));
break;
default:
if(isArray)
TakesAnObjectOrCollection(sb,Arrays.asList(get(Object[].class)));
else
TakesAnObjectOrCollection(sb,get(Object.class));
break;
}
return sb.toString();
}
}
: toJSON. ( TakesADataObjOrCollectionOfDataObjs TakesAnObjectOrCollection), , JSONable . , , Collection<?>, Collection<? extends JSONable>, .
, Object DataObj ( , , , Class<?> , ), List<?> List<? extends JSONable>.
: , , . , , , typeClass genericTypeClass. , , :
- ,
typeClass, : , typeClass, genericTypeClass, , typeClass, genericTypeClass null.
- ( get set), .
- switch
toJSON , , , genericTypeClass, , DataObj .
: , , ( , JSON DataField)?
>
, 3 4 , XY, .