Java中getDeclaredXxxxxs()与getXxxxxs()的区别
下文笔者讲述反射中getDeclaredXxxxxs()与getXxxxxs()方法的功能区别,如下所示
getDeclaredXxxxxs()与getXxxxxs()方法的功能简介
获得构造方法:
getDeclaredConstructors():
获得类的所有构造方法(public,默认包,protected,private)
getConstructors():
获得类的public构造方法
获得字段:
getDeclaredFields():
获得类的所有字段,不包括父类
getFields():
获得类的public字段,包括父类。
获得方法:
getDeclaredMethods():
获得类和实现的接口的所有方法,不包括父类
getMethods():
获得类和实现的接口的public方法,包括父类。
例:getDeclaredXxxxxs()与getXxxxxs()的区别说明
package com.java265;
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class TestAboutDeclared {
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() {
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


