当前位置: 代码迷 >> J2SE >> 是否能用instanceof来判断通过反射机制获取到的Field,如果可以如何判断呢
  详细解决方案

是否能用instanceof来判断通过反射机制获取到的Field,如果可以如何判断呢

热度:60   发布时间:2016-04-24 12:16:58.0
是否能用instanceof来判断通过反射机制获取到的Field,如果可以怎么判断呢
是否能用instanceof来判断通过反射机制获取到的Field,如果可以怎么判断呢
Field[] fields = obj.getClass().getDeclaredFields();
for(Field field:superFields){
Type type = field.getGenericType();
Object tt = type;
if(tt instanceof String){
System.out.println("我是String");
}

这样判断行不通,怎么办呀?

------解决方案--------------------
Java code
Field[] fields = obj.getClass().getDeclaredFields();        for (int i = 0; i < fields.length; i++) {            // 跳过静态属性            String mod = Modifier.toString(fields[i].getModifiers());            if (mod.indexOf("static") != -1)                continue;            // 得到属性的类名            String className = fields[i].getType().getSimpleName();            // 得到属性值            if (className.equalsIgnoreCase("String"))                                System.out.println(fields[i].getName()+"="+(String) fields[i].get(obj));            else if (className.equalsIgnoreCase("byte[]")) {                byte[] buffer = (byte[]) fields[i].get(obj);                System.out.println(fields[i].getName()+"="+buffer);            } else if (className.equalsIgnoreCase("boolean")) {                System.out.println(fields[i].getName()+"="+(Boolean) fields[i].get(obj));            } else if (className.equalsIgnoreCase("int")) {                System.out.println(fields[i].getName()+"="+((Integer) fields[i].get(obj)).intValue());            }        }
------解决方案--------------------
你想要达到什么目标呢,调用field.getGenericType()你想要做什么?
------解决方案--------------------
type不是String类型或它的子类所以判断永远为false(ps:String不可能有子类)
  相关解决方案