美文网首页
Java反射中遇到的一个问题

Java反射中遇到的一个问题

作者: 12313凯皇 | 来源:发表于2019-04-18 21:32 被阅读0次

    有一个需求,就是通过反射判断一个类的属性的数据类型是否为String类型,本来挺简单的但是却弄了半天,原因是我在type.isPrimitive()方法后去判断的:

    Class<Person> personClass = Person.class;
    Field[] declaredFields = personClass.getDeclaredFields();
    for (Field field : declaredFields) {
        try {
            //获取值  是否是基本类型
            Class<?> type = field.getType();
            if (type.isPrimitive()) {
                  if (String.class == type) {
                       System.out.println("type = String");
                  }
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    

    这样是无法正确判断,但是如果在isPrimitive()方法外就可以了,具体的原因没有找到,isPrimitive()是一个本地方法也看不到源码 = =,只能先记录下来,下面这段代码是可以正确判断的:

    Class<Person> personClass = Person.class;
    Field[] declaredFields = personClass.getDeclaredFields();
    for (Field field : declaredFields) {
        try {
            //获取值  是否是基本类型
            Class<?> type = field.getType();
            if (String.class == type) {
                  System.out.println("type = String");
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    

    相关文章

      网友评论

          本文标题:Java反射中遇到的一个问题

          本文链接:https://www.haomeiwen.com/subject/uiakiqtx.html