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

高手进来,如何得到类中的方法和属性,先谢谢了。

程序如何得到类中的方法和属性,当然是public的。

就好比如何实现在IDE中“xxx.”后面自动出现方法和属性的功能。

呵呵,不知道我说清楚了没有,大家帮帮我啊,先谢谢了。

------解决方案--------------------
查看

软件包 java.lang.reflect
提供类和接口,以获取关于类和对象的反射信息。


------解决方案--------------------
严重同意楼上。
reflect是很牛X的东东。
------解决方案--------------------
用反射
假设你有类A
public class A {
int i;
String s;
public void say(){

}
}
要取得A的属性和方法,那么可以这么写
import java.lang.reflect.Field;
import java.lang.reflect.Method;


public class B {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Class c=Class.forName( "A ");
Field[] f=c.getDeclaredFields();
Method[] m=c.getMethods();
for(int i=0;i <f.length;i++){
System.out.println( "name: "+f[i].getName()+ " class: "+f[i].getClass().getName() );
}
for(int i=0;i <m.length;i++){
System.out.println( "method name: "+m[i].getName());
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

------解决方案--------------------
.getClass()
------解决方案--------------------
public ClassA {
public void methodA(){
}
}

当然是new一个实例,然后调用它的方法啊。
ClassA a=new ClassA();
a.methodA;
------解决方案--------------------
嗯,看java.lang.reflect包,
没错!里面的Method、Field等就是对应类的方法和属性等。
从任何的一类的class属性里可以get出那些东西来。
如Method[] ms = System.class.getMethods();就得到了System类所有的方法,
然后ms[0].getName()之类的就可以得到方法相关的信息。

另外,如果想实现IDE的自动提示功能,可以考虑动态编译和加载,
即对于将编辑的代码动态编译它,再用定制的ClassLoader载入它,
进而用上面的反射方法(reflect)来进一步处理……^_^
------解决方案--------------------
java.lang.reflect


java.lang.reflect
------解决方案--------------------
谢谢楼上的共享,没有想到JAVA还有如此的用法。