4

次のコードを使用して、リフレクションでプリミティブおよびオブジェクトであるクラスメンバーを見つけます。タイプに応じて特定のメソッドを呼び出したいため、フィールドがタイププリミティブ、オブジェクト、クラス参照であるかどうかを識別する方法があります。たとえば、フィールドがプリミティブの場合は handlePrimitive への呼び出し フィールド タイプが他のタイプの参照の場合 (以下の例では SalesOrderItemPK primaryKey; ) メソッド handleClassReferance への呼び出しなど

理解するだけで、クラスを取得して調査し、メンバータイプに従ってデータを作成する必要があります...

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];

ここでは、データ型に応じてフィールドを処理できる特定のメソッドを呼び出したい

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'));

たとえば、クラスは次のようになります。オブジェクトを作成するには、primaryKey キーを知る必要があります。

@Entity
public class SalesOrderItem 
{
    @EmbeddedId
    SalesOrderItemPK primaryKey; 
    private String ProductId;
    private String Notes;
4

1 に答える 1

17

を呼び出さず.toString()に にキャストTypeするとClass.isPrimitive()

于 2013-02-17T13:18:47.787 に答える