java反射 - getXXX 与 getDeclaredXXX
1、getXXX 和 getDeclaredXXX
java 里 Class<?> 有下面这些方法:

类似的方法有:

2、getMethod(s) 和 getDeclaredMethod(s)
getDeclaredMethods只获取当前对象申明的方法,不包含继承过来的方法
* Returns an array containing {@code Method} objects reflecting all the
* declared methods of the class or interface represented by this {@code
* Class} object, including public, protected, default (package)
* access, and private methods, but excluding inherited methods.
getMethods获取public方法
* Returns an array containing {@code Method} objects reflecting all the
* public methods of the class or interface represented by this {@code
* Class} object, including those declared by the class or interface and
* those inherited from superclasses and superinterfaces.
以常用的getMethod和getDeclaredMethod为例:
public class DemoService {
public String showDemoPublic(String methodName) {
return "show demo " + methodName;
}
protected String showDemoProtected(String methodName) {
return "show demo " + methodName;
}
private String showDemoPrivate(String methodName) {
return "show demo " + methodName;
}
}
getMethods与getDeclaredMethods:
System.out.println("========================getMethods=========================");
Method[] methods_1 = demoService.getClass().getMethods();
for (Method m : methods_1) {
System.out.println(m);
}
System.out.println("========================getDeclaredMethods=========================");
Method[] methods_2 = demoService.getClass().getDeclaredMethods();
for (Method m : methods_2) {
System.out.println(m);
}
========================getMethods=========================
public java.lang.String com.logback.demo.service.DemoService.showDemoPublic(java.lang.String)
public final void java.lang.Object.wait() throws java.lang.InterruptedException
public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException
public boolean java.lang.Object.equals(java.lang.Object)
public java.lang.String java.lang.Object.toString()
public native int java.lang.Object.hashCode()
public final native java.lang.Class java.lang.Object.getClass()
public final native void java.lang.Object.notify()
public final native void java.lang.Object.notifyAll()
========================getDeclaredMethods=========================
public java.lang.String com.logback.demo.service.DemoService.showDemoPublic(java.lang.String)
private java.lang.String com.logback.demo.service.DemoService.showDemoPrivate(java.lang.String)
protected java.lang.String com.logback.demo.service.DemoService.showDemoProtected(java.lang.String)
getMethod与getDeclaredMethod
public void getMethodByName(@RequestParam("method") String method) throws NoSuchMethodException {try {
System.out.println("========================getMethod=========================");
Method method1 = demoService.getClass().getMethod("showDemo" + method, String.class);
System.out.println(method1);
} catch (Exception ex) {
System.out.println(ex);
}
try {
System.out.println("========================getDeclaredMethod=========================");
Method method2 = demoService.getClass().getDeclaredMethod("showDemo" + method, String.class);
System.out.println(method2);
} catch (Exception ex) {
System.out.println(ex);
}
}
http://localhost:8088/getMethod?method=Public
========================getMethod=========================
public java.lang.String com.logback.demo.service.DemoService.showDemoPublic(java.lang.String)
========================getDeclaredMethod=========================
public java.lang.String com.logback.demo.service.DemoService.showDemoPublic(java.lang.String)
http://localhost:8088/getMethod?method=Protected
========================getMethod=========================
java.lang.NoSuchMethodException: com.logback.demo.service.DemoService.showDemoProtected(java.lang.String)
========================getDeclaredMethod=========================
protected java.lang.String com.logback.demo.service.DemoService.showDemoProtected(java.lang.String)
http://localhost:8088/getMethod?method=Private
========================getMethod=========================
java.lang.NoSuchMethodException: com.logback.demo.service.DemoService.showDemoPrivate(java.lang.String)
========================getDeclaredMethod=========================
private java.lang.String com.logback.demo.service.DemoService.showDemoPrivate(java.lang.String)
2、getField(s) 和 getDeclaredField(s)
public class Demo {
private Integer id;
private String name;
public String desc;
}
public class StudentDemo extends Demo {
private Integer age;
private Integer sex;
}
验证getField和getDeclareField
for (Field field : demo.getClass().getDeclaredFields()) {
System.out.println(field);
}
System.out.println(">>>>>>>>");
for (Field field : demo.getClass().getFields()) {
System.out.println(field);
}
System.out.println("===========================================");
for (Field field : student.getClass().getDeclaredFields()) {
System.out.println(field);
}
System.out.println(">>>>>>>>");
for (Field field : student.getClass().getFields()) {
System.out.println(field);
}
getDeclaredField获取所有申明的属性,不包含继承来的属性。
getFields获取所有public的属性,包含继承来的属性。
private java.lang.Integer com.logback.demo.common.Demo.id
private java.lang.String com.logback.demo.common.Demo.name
public java.lang.String com.logback.demo.common.Demo.desc
>>>>>>>>
public java.lang.String com.logback.demo.common.Demo.desc
===========================================
private java.lang.Integer com.logback.demo.common.StudentDemo.age
private java.lang.Integer com.logback.demo.common.StudentDemo.sex
>>>>>>>>
public java.lang.String com.logback.demo.common.Demo.desc
java反射 - getXXX 与 getDeclaredXXX的更多相关文章
- Java Reflection(getXXX和getDeclaredXXX)
package com.sunchao.reflection; public class Person { private int age ; private String name; public ...
- 浅析Java反射机制
目前,在项目中使用Java反射机制(除Spring框架)的地方不多,但为后续准备,简单将最近的反射体会总结如下: 1. 按光学中的反射,可以将java中的反射理解为“镜像”.有以下用途: Java反射 ...
- 【java】java反射初探 ——“当类也照起镜子”
反射的作用 开门见山地说说反射的作用 1.为我们提供了全面的分析类信息的能力 2.动态加载类 我理解的“反射”的意义 (仅个人理解) 我理解的java反射机制就是: 提供一套完善而强大的API ...
- 【java】java反射初探 ——“当类也学会照镜子”
反射的作用 开门见山地说说反射的作用 1.为我们提供了全面的分析类信息的能力 2.动态加载类 我理解的“反射”的意义 (仅个人理解哈) 我理解的java反射机制就是: 提供一套完善而强 ...
- Java反射初探 ——“当类也学会照镜子”
反射的作用 开门见山地说说反射的作用 1.为我们提供了全面的分析类信息的能力 2.动态加载类 我理解的“反射”的意义 (仅个人理解哈) 我理解的java反射机制就是: 提供一套完善而强大的 ...
- 有关java反射的几个小方法的作用和区别
1.Class类中 getXXX()和getDeclaredXXX()的作用和区别: 前者获取某个类的所有公共(public)的字段(or方法or构造函数),包括父类.后者获取所有的字段(or方法or ...
- 不藏了,这些Java反射用法总结都告诉你们
摘要:Java反射是一种非常强大的机制,它可以在同一个系统中去检测内部的类的字段.方法和构造函数.它非常多的Java框架中,都大量应用了反射技术,如Hibernate和Spring.可以说,反射机制的 ...
- Java反射机制深入研究
ava 反射是Java语言的一个很重要的特征,它使得Java具体了“动态性”. 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法? ...
- java 反射 动态代理
在上一篇文章中介绍Java注解的时候,多次提到了Java的反射API.与javax.lang.model不同的是,通过反射API可以获取程序在运行时刻的内部结构.反射API中提供的动态代理也是非常强大 ...
随机推荐
- cocos lua 加密方案
cocos2d使用的是luajit,lua原生编译出来的bytecode和luajit是不兼容的,所以直接用luac法编译出来的bytecode脚本无法在cocos2d中使用. 目前所指的解决方案有2 ...
- Caused by: java.lang.ClassNotFoundException[android的终极解决错误]
from:http://blog.csdn.net/changemyself/article/details/7861525 08-13 18:29:22.924: E/AndroidRuntime( ...
- js让程序暂停运行的方法
//自己写的暂停毫秒数的函数 function pauseTime(millTime) { var start=Date.now(); while(true){ var nowTime=Date.no ...
- java 从服务器下载文件并保存到本地
昨天在做一个项目时,用到了从服务器上下载文件并保存到本地的知识,以前也没有接触过,昨天搞了一天,这个小功能实现了,下面就简单的说一下实现过程: 1.基础知识 当我们想要下载网站上的某 ...
- 2017 Multi-University Training Contest - Team 5——HDU6095&&HDU6090&&HDU
HDU6095——Rikka with Competition 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6095 题目意思:抱歉虽然是签到题,现场 ...
- iOS如何让主界面不显示NavigationBar
这个问题曾经困扰过我.现在我给出正解.- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self ...
- selector.select(500); EventLoop及事件循环机制 netty 在半透明做代理网关下 对请求的批处理
Netty框架学习之路(五)—— EventLoop及事件循环机制 - 懋懋之为 - CSDN博客 https://blog.csdn.net/tjreal/article/details/79751 ...
- Fibonacci----poj3070(矩阵快速幂, 模板)
题目链接:http://poj.org/problem?id=3070 . 就是斐波那契的另一种表示方法是矩阵的幂: 所以是矩阵快速幂:矩阵快速幂学习 #include <cstdio> ...
- Travel---hdu5441(并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5441 题意:是有n个城市,m条边包含u v w:代表u到v的时间是w: 给q的时间x,求在x时间内Ja ...
- MFC Spin 控件
一般应用: 设置属性: Auto Buddy(自动取关联控件为TAB顺序前一个)Set Buddy Interger(使控件设置关联控件数值,这个值可以是十进制或十六进制)Wrap(数值超过范围时循环 ...