日期:2014-05-20  浏览次数:20685 次

JAVA怎么不创建实例来获取类里面属性值的问题
最近遇到这样的一个问题,就是我怎么才能不创建类的实例来获取类里面属性的值呢?

public class UserInfo {
public String name = "testInfo";
}


上面是在类里面创建的一个属性name值,我怎么不创建UserInfo 的实例来获取这个值呢?

我想到的方法是:

public class TestReflct {
public static void main(String[] args) throws ClassNotFoundExceptionInstantiationExceptionIllegalAccessException {
Class cls = Class.forName("com.net.test.reflct.UserInfo");
Field[] field = cls.getFields();
for (int i = 0; i < field.length; i++) {
String fname = field[i].getName();
System.out.println(fname);
}
UserInfo u = (UserInfo) cls.newInstance();
System.out.println(u.name);
}
}


但是上面还是间接的创建了UserInfo 的实例,这样是不行的,哪位大神有知道的啊?
------解决方案--------------------
这个从根本上就有问题了,java是纯面向对象的语言,没有对象怎么访问其他的属性方法呢?就算是反射也只能拿到属性的类型,名称等等基本信息而已,不可能拿到属性值,这个是java的特性,如果实现了你的这种需求那就要修改java语言的特性了,是不是不太可能实现呢?而且java的属性取值是通过get方法,不是直接取,就算是通过反射也是只能通过get方法取值,不是其他方式,所以楼主提的这个问题似乎是要颠覆java的特性啊。
------解决方案--------------------
没有实例 就没有实例字段。java 可以直接读写内存的,前提是你要先创建。。。
------解决方案--------------------
静态的就可以  否则一边玩去  因为你破坏了开发Java的人的原则
------解决方案--------------------
你定义的是成员变量把,不实例化怎么能取得到!除非换成静态变量,这样还可以通过反射来取得!
------解决方案--------------------
呵呵,从学java进入面向对象就开始要建立面向对象的思想,楼主这是要闹哪样?普通成员是依托对象而存在的,不然只是一堆描述性信息,说白了就是朦胧的,请问怎么获取朦脓的信息呢?将朦胧的实例化,看见的摸得着你才能够想办法得到!