易截截图软件、单文件、免安装、纯绿色、仅160KB

JAVA 反射

   您查询的关键词是:newinstance object initargs  。如果打开速度慢,可以尝试快速版;如果想保存快照,可以添加到搜藏。
(百度和网页http://bbs.iaiai.com/forum/read.php?tid=2690的作者无关,不对其内容负责。百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面。)
 主题 : java的反射机制  使用道具┊ 复制链接 ┊浏览器收藏┊打印
java的反射机制
java的反射机制一
在java里面有一种反射机制reflect,这是其它语言所没有的,可以动态创建对象和方法,还有成员变量等:
一.对象动态创建的方法如下:
我们需要使用的有Class类和Constructor类,还有Method和Field类,具体的使用方法如下:
1.使用Class类的Class.forName(String className)方法得到一个Class对象,
eg: Class aClass=Class.forName(Foo.class.getName());
或者 Class aClass=Class.forName("Foo");
2.得到一个Class对象之后,我们还需要把它转换成我们需要的类型对象,
eg: Foo foo=(Foo)aClass.newInstance();
注意此地方的newInstance()方法只能调用Foo类的公有无参构造函数,如果没有构造函数
则使用父类的公有无参构造函数,如果被重写了,则会创建对象失败。
3.得到了对象之后我们就可以任意摆布她了。
4.如果我们的构造函数里面需要传入参数,怎么办?
这时候我们就需要使用Constructor类了,创建方法如下:
eg: Constructor ctor = aClass.getDeclaredConstructor(Class[] parameterTypes);
如果我们有这样一个类需要动态创建对象:
public class BB {
private int baby = 9;
public BB(int b) {
baby = b;
}
/**
* @return Returns the baby.
*/
public int getBaby() {
return baby;
}
/**
* @param baby
* The baby to set.
*/
public void setBaby(int baby) {
this.baby = baby;
}
}
那么我们如何来做呢?
Integer[] os = new Integer[1];
os[0] = new Integer(6);
Class cls = Class.forName(BB.class.getName());
Constructor ctor = cls.getDeclaredConstructor((new Class[] { int.class }));
BB bbb = (BB) ctor.newInstance(os);
System.out.println(bbb.getBaby());
二.方法的动态创建:
假设上面的BB类需要动态创建getBaby()方法,我们该怎么做?这时候我们需要使用到
Method类了:
1.定义一个方法m:
eg: Class cls = Cla


相关文档:

gson(JSON字符串转换成一个相等的Java对象)

  目前大多数使用gson的还要求在java类中使用java annotation,不完全支持POJO。
Gson这个Java类库可以把Java对象转换成JSON,也可以把JSON字符串转换成一个相等的Java对象。Gson支持任意复杂Java对象包括没有源代码的对象。
代码例子
/*
* To change this template, choose Tools | Templates
* and open the ......

java 简单工厂设计模式

先写程序,在来解释简单工厂和工厂方法模式。
1、定义一个汽车接口
package com.beckham.factory;
/**
* @author 作者<Beckham>
* Email:gaowm0207@gmail.com
* Jan 26, 2010 2:35:15 PM
* Version:1.0
*/
public interface Car {
public void start() ;
}

接口里面定义一个方法:start( ......

Java 多线程编程之七:死锁(附源代码)

Java 多线程编程之七:死锁(附源代码)
源代码下载
        多线程编程中,线程死锁也是一个比较有趣的问题。然而死锁发生的可能性很小,正因如此,大家可能对此不是很熟悉。但是死锁并不是不重要,因为它确确实实存在着,随时会出现在我们的程序之中。很多朋友面试的时候都遇到过这 ......

java中对象的序列化


序列化的过程就是将对象写入字节流和从字节流中读取对象。将对象状态转换成字节流之后,可以用java.io包中的各种字节流类将其保存到文件中,可以通过管道或线程读取,或通过网络连接将对象数据发送到另一主机。对象序列化功能非常简单、强大,在RMI、Socket、JMS、EJB都有应用。对象序列化问题在网络编程中并不是最激动人 ......

JAVA正则中文匹配

1、匹配双引号间内容:
Java代码
public
 
void
 test1() {  
    // 匹配双引号间内容
  
    String pstr = "\"([^\"]+)\""
;  
    Pattern  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号