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中提供的动态代理也是非常强大 ...
随机推荐
- java后台高德经纬度转地理位置信息
import java.util.LinkedList;import java.util.List; import org.apache.http.HttpResponse;import org.ap ...
- 点击input选中文本
选文本: $(".unline-ipt").click(function () { $(this).focus().select(); this.selectionStart = ...
- VC/MFC中通过CWebPage类调用javascript函数(给js函数传参,并取得返回值)
转自:http://www.cnblogs.com/javaexam2/archive/2012/07/14/2632959.html ①需要一个别人写好的类CWebPage,将其对于的两个文件Web ...
- Arduino开发版学习计划--小车的行走
小车的前进后退,左右转弯 代码如下 void motor(char pin,char pwmpin,char state,int val) { pinMode(pin, OUTPUT); ) { an ...
- js 中导出excel 较长数字串会变成科学计数法(转载)
在做项目中,碰到如题的问题.比如要将居民的信息导出到excel中,居民的身份证号码因为长度过长(大于10位),excel会自动的将过长的数字串转换成 科学计数法.现在网上找到解决方案之一: (在数字串 ...
- js 实现table表格拖拽和点击表头升降序排序
js 实现table表格拖拽和点击表头升降序排序,写的比较乱,用的时候可以把其中的一些模块函数提取出来 样式,由于是可拖拽表格,所以样式 table tr th{cursor:move;} js实现 ...
- navicat自动生成DDL语句
场景:当我们在开发库修改表结构之后,需要把这些表结构的变化同步更新到生产库,这时候可以在Navicat中copy表结构变更的SQL语句. 当你点击了“设计表”进行修改表结构,在保存表结构之前点击“SQ ...
- hibernate缓存,四种状态
FlushMode.AUTO:Hibernate判断对象属性有没有改变,是默认的清理模式 FlushMode.COMMIT:在事务结束之前清理Session的缓存,其他任何时候都不清理缓存 Flush ...
- 关闭在chrome里使用双指前进后退页面的功能
defaults write com.google.Chrome AppleEnableSwipeNavigateWithScrolls -bool FALSE
- 调试maven源代码
下载源代码,导入idea 运行MavenCli ,设置vm参数 -Dclassworlds.conf=/Users/fsq/Downloads/apache-maven-3.6.2.0/bin/m2. ...