无法反射出private的字段?这是为什么呢?

java的反射机制是可以反射出private字段的,但是网上说reflectasm速度比较快,但是我试过了,reflectasm 无法反射私有的字段。

Java代码  

  1. FieldAccess access = FieldAccess.get(Person.class);  

  2.     String[] ss = access.getFieldNames();  

  3.       

  4.     System.out.println(ss.length);  

  5.     for(String s : ss){  

  6.         System.out.println(s);  

  7.     }  


智慧大石
浏览 127回答 2
2回答

心有法竹

Java 的反射是可以访问私有变量的。Java代码  package test;    import java.lang.reflect.Field;    public class PrivateField {        public static void main(String[] args) throws Exception {          Dummy obj = new Dummy();          Field f = obj.getClass().getDeclaredField("s");          f.setAccessible(true);          String s = (String) f.get(obj);          System.out.println(s);      }  }    class Dummy {      private String s = "Hello";  }  

牧羊人nacy

你说的这个reflectasm没使用过,是不是和反射一样,需要调用getDeclareFileds这样的方法来获取,当通过getFileds在反射里也是获取不到的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java