使用反射查找String,Boolean,Integer类型的字段

use*_*201 1 java

有没有办法在类中查找类中的字段

    java.lang.Character.TYPE
    java.lang.Byte.TYPE
    java.lang.Short.TYPE
    java.lang.Integer.TYPE
    java.lang.Long.TYPE
    java.lang.Float.TYPE
    java.lang.Double.TYPE
Run Code Online (Sandbox Code Playgroud)

char,byte,short等有一个isPrimitive方法.

Mat*_*all 6

您可以从类Class#getDeclaredFields()中获取一系列字段.然后,迭代Field数组中的每个并根据需要进行过滤.

像这样的东西:

public static List<Field> getPrimitiveFields(Class<?> clazz)
{
    List<Field> toReturn = new ArrayList<Field>();

    Field[] allFields = clazz.getDeclaredFields();

    for (Field f : allFields)
    {
        Class<?> type = f.getType();
        if (type.isPrimitive())
        {
            toReturn.add(f);
        }
    }

    return toReturn;
}
Run Code Online (Sandbox Code Playgroud)

更多信息:


编辑

值得澄清的是,类型java.lang.Character.TYPE等与类文字是一样的.那是,

  • java.lang.Character.TYPE == char.class
  • java.lang.Byte.TYPE == byte.class
  • java.lang.Short.TYPE == short.class
  • java.lang.Integer.TYPE == int.class
  • java.lang.Long.TYPE == long.class
  • java.lang.Float.TYPE == float.class
  • java.lang.Double.TYPE == double.class