java - 使用反射查找字符串、 boolean 值、整数类型的字段

标签 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

有一个用于 char、byte、short 等的 isPrimitive 方法。

最佳答案

您可以从 Class#getDeclaredFields() 开始获取您类(class)中的字段数组。然后,遍历每个 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;
}

更多信息:


编辑

可能值得澄清的是类型 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

关于java - 使用反射查找字符串、 boolean 值、整数类型的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5148195/

相关文章:

Java时区转换: Help Required

java - 使用 spring-test-mvc 自定义测试 http header

java - FirstCup JavaEE 教程的问题

java - Java 中的二维列表

java - 如何在运行时使用其他形状制作自定义圆形?

java - 你如何比较java中相同泛型类型的两个值?

java - 尝试将对象添加到 PriorityQueue 时出现 NullPointerException

java - Gradle:无法获取类型 'EclipseProject' 的模型

Java - 将十进制解析为 x 位字节的解析器库

java - 从两个以上的表读取数据库数据到 Swing 表中,但框架无限期挂起