获得构造方法:
getDeclaredConstructors():获得类的所有构造方法。(public,默认包,protected,private)
getConstructors():获得类的public构造方法。
获得字段:
getDeclaredFields():获得类的所有字段,不包括父类。
getFields():获得类的public字段,包括父类。
获得方法:
getDeclaredMethods():获得类和实现的接口的所有方法,不包括父类。
getMethods():获得类和实现的接口的public方法,包括父类。
测试demo:
/**
* 2018年10月30日下午4:29:45
*/
package testreflect;
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
/**
* @author XWF
*
*/
public class TestAboutDeclared {
/**
* @param args
*/
public static void main(String[] args) {
Class<Clss> cls = Clss.class;
Constructor[] cons = cls.getDeclaredConstructors();
show(cons);
Constructor[] cons2 = cls.getConstructors();
show(cons2);
System.out.println("=============");
Field[] fields2 = cls.getDeclaredFields();
show(fields2);
Field[] fields = cls.getFields();
show(fields);
System.out.println("=============");
Method[] ms = cls.getDeclaredMethods();
show(ms);
Method[] ms2 = cls.getMethods();
show(ms2);
}
public static <T> void show(T[] ts) {
System.out.println("\t>len="+ts.length);
for(T t:ts) {
System.out.println(t);
}
}
}
interface IClss{
public void i_hello();
void i_world();
}
class Fcls{
public int f_i = 1;
String f_s = "ffff";
public void f_fun() {
}
String f_gets() {
return f_s;
}
}
class Clss extends Fcls implements IClss{
public int i = 12;
String s = "hello";
protected float f = 12.3f;
private double d = 123.321;
public Clss(int x){
System.out.println("x"+x);
}
Clss(){
System.out.println("构造方法。");
}
protected Clss(String s){
System.out.println("s="+s);
}
private Clss(double d) {
System.out.println("d="+d);
}
public void show() {
System.out.println("show:"+this);
}
int getint() {
return i;
}
protected String getStr() {
return s;
}
private double getd() {
return d;
}
@Override
public void i_hello() {
}
@Override
public void i_world() {
}
}
结果:

本文深入探讨Java反射API的使用,详细解析如何通过反射获取类的构造方法、字段和方法,包括public、默认、protected和private的成员。通过具体示例,展示了getDeclaredConstructors()、getConstructors()、getDeclaredFields()、getFields()、getDeclaredMethods()和getMethods()等方法的区别及应用。
1190

被折叠的 条评论
为什么被折叠?



