getDeclaredMethod 和 getMethod 的区别
来源:互联网 发布:xmind8 for mac序列号 编辑:程序博客网 时间:2024/06/13 08:37
在使用反射的时候,会用到 a.getClass.getMethod 和 a.getClass.getDeclaredMethod.
二者的区别就在于,前者返回的是a所在类的所有public 方法,而后者返回的是其所在类的所有方法。
以下程序段在不同包中:
ss中定义了类C以及实现并通过HiddenC得到A类型的实例:
package ss;class C implements A{ @Override public void a() { System.out.println("class ss.C.a"); } void b(){ System.out.println("class ss.C.b"); } protected void c(){ System.out.println("class ss.C.c"); } private void d(){ System.out.println("class ss.C.d"); }}public class HiddenC { public static A getIns(){ return new C(); }}
但是通过反射机制,通过getDeclaredMethod(methodName)可以调用到a对象作为C类对象的所有方法。当然,这么使用必须假定你事先知道C的所有方法。
package hideC;import ss.A;import ss.HiddenC;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;/** * Created with IntelliJ IDEA. * User: Ghost * Date: 14-8-17 * Time: 下午10:36 * To change this template use File | Settings | File Templates. */public class HiddenImp { public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { A a = HiddenC.getIns(); callHiddenMethod(a,"a"); callHiddenMethod(a,"b"); callHiddenMethod(a,"c"); } static void callHiddenMethod(Object a,String methodName) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { Method g = a.getClass().getDeclaredMethod(methodName); g.setAccessible(true); g.invoke(a); }}
0 0
- getDeclaredMethod()和getMethod()的区别
- getDeclaredMethod()和getMethod()的区别
- getDeclaredMethod()和getMethod()的区别
- getDeclaredMethod 和 getMethod 的区别
- getDeclaredMethod()和getMethod()的区别
- getDeclaredMethod和getMethod的区别
- getDeclaredMethod方法和getMethod方法区别?
- java_class.getMethod 与 class.getDeclaredMethod的区别
- java_class.getMethod 与 class.getDeclaredMethod的区别
- Java 反射机制中 getMethod()和getDeclaredMethod()区别
- Java 反射机制中 getMethod()和getDeclaredMethod()区别
- 反射中的getDeclaredMethod和getMethod
- Java反射代码 得到某类的所有字段 getFields()与getDeclaredFields()区别 getMethod()和getDeclaredMethod()区别
- Java反射代码 得到某类的所有字段 getFields()与getDeclaredFields()区别 getMethod()和getDeclaredMethod()区别
- Java的Class类提供了许多的getDeclaredxxx和getxxx方法,例如getDeclaredMethod和getMethod成对出现,那它们有什么区别呢?
- java反射中getMethod getDeclaredMethod
- java反射中getMethod getDeclaredMethod .
- java反射机制——getMethod/getField与getDeclaredMethod/getDeclaredField区别
- POJ2001——Shortest Prefixes(Trie树模板)
- C/C++趣味程序百例
- [official] Azkaban
- uva 1386 - Cellular Automaton(循环矩阵+矩阵快速幂)
- public class PrimeNumber
- getDeclaredMethod 和 getMethod 的区别
- hdu 1011树形dp
- Android布局管理器的介绍与使用
- Linux设备驱动开发环境的搭建(转)
- filepath = path
- public class定义类
- 属性与内存管理(属性与内存管理都是相互关联的) 第一部分
- Jobdu 题目1009:二叉搜索树
- 美拍为何会这样火