黑马程序员——高新技术——反射2(指定类中的方法)
来源:互联网 发布:明源软件股份有限公司 编辑:程序博客网 时间:2024/06/11 23:12
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
反射指定类中的方法:
1.获取指定方法;
getMethods();//获取的是该类中的公有方法和父类
getDeclaredMethods();//获取本类中的方法,包含私有方法。
2. 获取指定方法;
getMethod(methorName, obj, obj); //想要运行指定方法,当然是方法对象最清楚,为了让方法运行,调用方法对象的invoke方法即可,但是方法运行必须要明确所属的对象和具体的实际参数。
method.invoke(obj, 39,"hehehe");//执行一个方法
3. 想要运行私有方法。
//想要获取私有方法。必须用getDeclearMethod();
Method method = clazz.getDeclaredMethod("method", null);
// 私有方法不能直接访问,因为权限不够。非要访问,可以通过暴力的方式。
method.setAccessible(true);//一般很少用,因为私有就是隐藏起来,所以尽量不要访问。
4. 反射静态方法。
clazz.getMethod("function",null);
method.invoke(null,null); //只需要将invoke方法的第一个参数设为null即可!
package javaenhance;import java.lang.reflect.Method;public class test2 {public static void main(String[] args) throws Exception {method_1();method_2();method_3();method_4();}//获取类中所有的方法。public static void method_1() throws Exception {Class clazz = Class.forName("javaenhance.Person");Method[] methods = clazz.getMethods();//获取的是该类中的公有方法和父类中的公有方法。methods = clazz.getDeclaredMethods();//获取本类中的方法,包含私有方法。for(Method method : methods) {System.out.println(method);}System.out.println("获取类中所有的方法");System.out.println();}//获取指定方法;public static void method_2() throws Exception {Class clazz = Class.forName("javaenhance.Person");//获取指定名称的方法。Method method = clazz.getMethod("sayHello", int.class,String.class);//想要运行指定方法,当然是方法对象最清楚,为了让方法运行,//调用方法对象的invoke方法即可,但是方法运行必须要明确所属的对象和具体的实际参数。Object obj = clazz.newInstance();System.out.println(method.invoke(obj, 39,"Love"));//执行一个方法System.out.println("获取指定方法");System.out.println();}//想要运行私有方法。public static void method_3() throws Exception {Class clazz = Class.forName("javaenhance.Person");//想要获取私有方法。必须用getDeclearMethod();Method method = clazz.getDeclaredMethod("myPrivate", null);// 私有方法不能直接访问,因为权限不够。非要访问,可以通过暴力的方式。method.setAccessible(true);//一般很少用,因为私有就是隐藏起来,所以尽量不要访问。}//反射静态方法。public static void method_4() throws Exception {Class clazz = Class.forName("java.lang.Math");Method method = clazz.getMethod("abs", long.class);//只需要将invoke方法的第一个参数设为null即可!System.out.println(method.invoke(null, -10000l));System.out.println("反射静态方法。");}}class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public String toString(){return "name:"+name+" age:"+age;}public String sayHello(int age,String name){return "My name is "+name+","+age+"years old ,nice to meet you ";}private void myPrivate(){System.out.println("i am private");}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
0 0
- 黑马程序员——高新技术——反射2(指定类中的方法)
- 黑马程序员——高新技术(反射)
- 黑马程序员——高新技术(反射)
- 黑马程序员—高新技术_反射(2)
- 黑马程序员——高新技术 反射(2)
- 黑马程序员——高新技术之 反射
- 黑马程序员——高新技术---反射
- 黑马程序员——【Java】【高新技术】反射
- 黑马程序员——高新技术---反射
- 黑马程序员java高新技术——反射
- 黑马程序员——高新技术之反射
- 黑马程序员——高新技术.反射
- 黑马程序员——java高新技术:反射
- 黑马程序员——Java高新技术---反射
- 黑马程序员——java高新技术--反射
- 黑马程序员——高新技术---反射
- 黑马程序员——Java高新技术---反射
- 黑马程序员——高新技术--反射
- FastJson
- 黑马程序员——高新技术——反射笔记
- Mac 平台搭建 Android 集成开发环境
- Expected positional parameter count: 1, actual parameters: [] [{ call proc1(?)}]
- uvalive5721 Activation(概率dp)
- 黑马程序员——高新技术——反射2(指定类中的方法)
- 二级导航
- Named query not known: *
- Trapping Rain Water
- 黑马程序员——java基础——正则表达式
- [1]_技术研发 - 七年之痒
- BUG现象与对应0003 全局数据结构复杂多线程中应该被复制使用
- C++ 常用代码001 IsValidFileName VC/MFC 判断有效文件名
- js中字符串操作函数