博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java反射学习总结
阅读量:7181 次
发布时间:2019-06-29

本文共 1653 字,大约阅读时间需要 5 分钟。

hot3.png

类的封装类:Class类型的介绍

//任何一个类都是Class的实例对象,这个实例对象有三种表示方式//第一种表示方式--->实际在告诉我们任何一个类都有一个隐含的静态成员变量class		Class c1 = Foo.class;//第二中表达方式  已经知道该类的对象通过getClass方法		Class c2 = foo1.getClass();//不管c1  or c2都代表了Foo类的类类型,一个类只可能是Class类的一个实例对象		System.out.println(c1 == c2);//第三种表达方式		Class c3 = null;		try {			c3 = Class.forName("com.reflect.Foo");		} catch (ClassNotFoundException e) {			e.printStackTrace();		}

方法的封装类:Method类介绍

//要获取print(int ,int )方法  1.要获取一个方法就是获取类的信息,获取类的信息首先要获取类的类类型		A a1 = new A();		Class c = a1.getClass();		/*		 * 2. 获取方法 名称和参数列表来决定  		 * getMethod获取的是public的方法		 * getDelcaredMethod自己声明的方法		 */	    try {			//Method m =  c.getMethod("print", new Class[]{int.class,int.class});	    	Method m = c.getMethod("print", int.class,int.class);	    		    	//方法的反射操作  	    	//a1.print(10, 20);方法的反射操作是用m对象来进行方法调用 和a1.print调用的效果完全相同	        //方法如果没有返回值返回null,有返回值返回具体的返回值	    	//Object o = m.invoke(a1,new Object[]{10,20});	    	Object o = m.invoke(a1, 10,20);	    	System.out.println("==================");	    	//获取方法print(String,String)             Method m1 = c.getMethod("print",String.class,String.class);             //用方法进行反射操作             //a1.print("hello", "WORLD");             o = m1.invoke(a1, "hello","WORLD");             System.out.println("===================");           //  Method m2 = c.getMethod("print", new Class[]{});                Method m2 = c.getMethod("print");               // m2.invoke(a1, new Object[]{});                m2.invoke(a1);		} catch (Exception e) {			// TODO Auto-generated catch block			e.printStackTrace();		}

对应的有

成员变量的封装类:Field

构造函数的封装类:Constructor

转载于:https://my.oschina.net/zhangdengjiexuyu/blog/638879

你可能感兴趣的文章
[RxJS] Error Handling in RxJS
查看>>
销售订单行上行号LINE_SHIPMENT_OPTION_NUMBER
查看>>
善用GIMP(Linux下的Photoshop),图像处理轻松又自由
查看>>
Docker for windows 入门一(下载安装)
查看>>
AngularJs的MVC模式
查看>>
世界观的内涵是认识论模型
查看>>
Cocos2d-x 3.1.1 Lua演示样例 ActionsProgressTest(进度条)
查看>>
win 下g++ 安装、环境配置等
查看>>
android:如何通过自定义工程模板让新建的工程都默认支持lambda表达式
查看>>
js日期格式化函数
查看>>
Spring 之 控制反转(IoC), 依赖注入(DI)和面向切面(AOP)
查看>>
在字符串S1中删除字符串S2中所包含的字符【转】
查看>>
微软工作这二年
查看>>
二叉搜索树
查看>>
复旦版最佳医院排行 沪21家医院入选全国百佳
查看>>
PHP file_get_contents设置超时处理方法
查看>>
ylbtech-LanguageSamples-XMLdoc
查看>>
27 Best Free Eclipse Plug-ins for Java Developer to be Productive
查看>>
Android应用icon和闪屏splash的尺寸
查看>>
C++强制类型转换操作符 dynamic_cast
查看>>