Java中getDeclaredXxxxxs()与getXxxxxs()的区别

戚薇 Java经验 发布时间:2023-06-24 15:48:01 阅读数:8225 1
下文笔者讲述反射中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() {
	}
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202306/16875929076883.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者