JAVA编程:JAVA反射机制猎取类和办法仓酷云
Java的桌面程序开发在java程序员里通常叫swing开发,主要用的swing包里的类开发的,也就是通常说的c/s架构开发成绩:[*]能够经由过程String范例的办法名调剂办法么?
[*]能够取得特定的类么?好比以后类,近邻的类,类的新实例,以后实例?
[*]多态的函数具有不异的名字、分歧的参数范例,怎样辨别呢?
[*]怎样猎取指定类的参数范例等信息?
带着这些成绩,我做了一些理论。总结以下:
谜底:Java供应反射机制,java.lang.reflect.*,能够完成包括不限于以上功效。
上面是一些经常使用的经由过程反射猎取类、挪用办法的例子。关于成员、机关器的挪用同理可得。想懂得更多,能够检察接口文档。
packagecom.taobao.tuisi;
publicclassActions{
publicvoidtempMethod(LonguserId){
System.out.println(“我是JAVA反射测试办法,我被invoke了”+userId);
}
publicvoidtemp()throwsException{
//1.取得class
//取得类确当前实例
Actionsa=this;
System.out.println(a);
//输入com.taobao.tuisi.Actions$$EnhancerByCGLIB$$dff89711@c2ccac
//取得指定类的新实例
Actionsb=Actions.class.newInstance();
System.out.println(b);
//输入com.taobao.tuisi.Actions@1e4fede
//
//经由过程范例取得类
ClassboolType=Boolean.class;
System.out.println(boolType);
//输入classjava.lang.Boolean
//
//经由过程变量取得类
StringstringExample=“”;
ClassstringType=stringExample.getClass();
System.out.println(stringType);
//输入classjava.lang.String
//
//由名字取得类
Class<?>c=Class.forName(“com.taobao.tuisi.Actions”);
System.out.println(c);
//输入classcom.taobao.tuisi.Actions
//
//2.关于method
//由函数名和参数范例失掉函数
LonguserId=9999l;
Methodmethod=Actions.class.getDeclaredMethod(“tempMethod”,userId.getClass());
System.out.println(method);
//输入publicvoidcom.taobao.tuisi.Actions.tempMethod(java.lang.Long)
//
//经由过程类、参数值挪用指定函数
Actionsactions=newActions();
Longargs[]=newLong;
args=userId;
method.invoke(actions,args);
//输入我是JAVA反射测试办法,我被invoke了9999
}
}
Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Oracle收购Sun后Java前途未卜。 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 是一种语言,用以产生「小应用程序(Applet(s)) Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 是一种为 Internet发展的计算机语言 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 是一种为 Internet发展的计算机语言 是一种突破用户端机器环境和CPU 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java是一种计算机编程语言,拥有跨平台、面向对java 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
页:
[1]