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() { } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。