马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
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[1];
args[0]=userId;
method.invoke(actions,args);
//输入我是JAVA反射测试办法,我被invoke了9999
}
}
Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Oracle收购Sun后Java前途未卜。 |