解决方案 »

  1.   

    这个从根本上就有问题了,java是纯面向对象的语言,没有对象怎么访问其他的属性方法呢?就算是反射也只能拿到属性的类型,名称等等基本信息而已,不可能拿到属性值,这个是java的特性,如果实现了你的这种需求那就要修改java语言的特性了,是不是不太可能实现呢?而且java的属性取值是通过get方法,不是直接取,就算是通过反射也是只能通过get方法取值,不是其他方式,所以楼主提的这个问题似乎是要颠覆java的特性啊。
      

  2.   

    没有实例 就没有实例字段。java 可以直接读写内存的,前提是你要先创建
      

  3.   

    静态的就可以  否则一边玩去  因为你破坏了开发Java的人的原则
      

  4.   

    呵呵,从学java进入面向对象就开始要建立面向对象的思想,楼主这是要闹哪样?普通成员是依托对象而存在的,不然只是一堆描述性信息,说白了就是朦胧的,请问怎么获取朦脓的信息呢?将朦胧的实例化,看见的摸得着你才能够想办法得到!
      

  5.   

    public String name = "testInfo";标示为静态的public static String name = "testInfo";在TestReflct类中直接调用System.out.println(UserInfo.name)
      

  6.   

    不行。
    http://stackoverflow.com/questions/14773642/using-reflection-to-get-the-initialization-value-of-a-field
      

  7.   

    要想不创建实例获得属性 加上static就可以哦嘛
      

  8.   


    谢谢大家的回复,我已经知道了。这个是实例变量,需要通过创建实例来创建的。如果改成静态的变量就可以了,因为静态变量在编译的时候就已经分配内存初始化了,所以静态变量的话是可以获取到的,如下:public class TestStaticReflct {
    public static void main(String[] args) throws Exception {
    Class cls = Class.forName("com.net.test.reflct.TestStatic");
    Field[] field = cls.getDeclaredFields();
    for (int i = 0; i < field.length; i++) {
    String fname = field[i].getName();
    System.out.println(fname + "属性类型:" + field[i].getModifiers());
    //判断是否是静态属性
    if(Modifier.isStatic(field[i].getModifiers())){
    System.out.println(fname + ":" + field[i].get(null));
    }
    }
    }
    }