Vérifiez dans la réflexion si le type est primitif ou le type de l'objet
Im en utilisant le code suivant pour trouver les membres de la classe, dans la réflexion qui sont primitives et d'un objet ,ma question est il y a un moyen d'identifier si le champ est de type primitif ,un objet ,une classe de référence parce que je veux l'appel à la méthode spécifique selon le type.
par exemple, si le champ est primitif appel à handlePrimitive si le type de champ d'un autre type de référence (dans l'exemple ci-dessous SalesOrderItemPK primaryKey; )appel à la méthode handleClassReferance etc
viens de comprendre j'ai besoin d'obtenir la classe et invistigate et de créer des données selon le type de membre...
for (Object clsObj : listClsObj) {
Field[] declaredFields = clsObj.getClass().getDeclaredFields();
numOfEntries = 1;
do {
Object newInstance = clsObj.getClass().newInstance();
for (Field field : declaredFields) {
//Get member name & types
Class<?> fieldType = field.getType();
Type genericType = field.getGenericType();
String fieldTypeName = fieldType.getName();
String memberName = field.getName();
if (genericType instanceof ParameterizedType) {
ParameterizedType pt = (ParameterizedType) genericType;
for (Type typeOfReferance : pt.getActualTypeArguments()) {
String classTypeName = typeOfReferance.toString();
String[] parts = classTypeName.split(" ");
memberReferance = parts[1];
ici, je veux appel à la méthode spécifique qui peut gérer les champs selon les types de données
public static SwitchInputType<?> switchInput(final String typeName, final String memberName, final int cnt) {
if (typeName.equals("java.lang.String")) {
return new SwitchInputType<String>(new String(memberName + " " + cnt));
} else if (typeName.equals("char")) {
return new SwitchInputType<Character>(new Character('a'));
la classe par exemple, devrait ressembler à ceci et j'ai besoin de savoir pour primaryKey la clé pour créer un objet.
@Entity
public class SalesOrderItem
{
@EmbeddedId
SalesOrderItemPK primaryKey;
private String ProductId;
private String Notes;
OriginalL'auteur John Jerrby | 2013-02-17
Vous devez vous connecter pour publier un commentaire.
Si vous n'appelez pas
.toString()
, mais au lieu de fonteType
àClass
, vous obtenez.isPrimitive()
par exemple je trouve avec ce code si le type int est primitif mais comment dois-je savoir pour le type chaîne de quel type est-il ?
Je n'ai pas cette question
Je pourrais faire
field.getType().isPrimitive()
sans la fonte supplémentaire àClass
dans la version 1.6 de Java, je pense.OriginalL'auteur Bozho