深入java反射
反射的基石——Class类
Java程序中的各个Java类属于同一类事物,描述这类事物的Java类名就是Class。比如:众多的人可以用一个Person类来表示,而这个类就可以描述人的信息(姓名、年龄、性别等等),而众多的Java类就可以用Class来表示。
Question:Person类代表人,它的实例对象可以是张三、李四,Class类代表Java类,它的各个实例对象有分别代表什么呢?
Answer: 对应各个类在内存中的字节码。一个类被类加载器加载到内存中,占用一份存储空间,这个空间里面的内容就是类的字节码,不同的类的字节码是不同的,所以它们在内存中的内容是不同的,这一个个空间可分别用一个个的对象来表示,这些对象显然具有相同的类型,即Class类型。
如何得到各个字节码对应的实例对象,有三种方法:
1、类名.class,例如:System.class
2、对象.getClass(),例如:new Data().getClass()
3、Class.forName("类名"),例如:Class.forName("java.util.Date")
Class类的属性和方法请参见jdk
反射
反射就是把Java类中的各种成分映射成相应的java类。例如:一个Java类中用一个Class类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等等信息也用一个个的Java类来表示。表示java类的Class类显然要提供一系列的方法来获得其中的变量,方法,构造方法,修饰符,包等信息,这些信息就是用相应类的实例对象来表示,它们是Field、Method、Contructor、Package等等。
Contructor类
1、得到某个类的所有构造方法:
Contructor[] contructors = lass.forName("类名").getContructors();
2、得到某个特定的构造方法:
//获得方法时要用到类型
Contructor contructors = Class.forName("类名").getContructor(参数类型.class,...);
3、创建实例对象
通常方式:String str = new String(new StringBuffer("abc"));
//调用获得的方法时要用到上面相同类型的实例
反射方式:String str = (String)contructor.newInstance(new StringBuffer("abc"));
4、Class.forName();
·示例:String obj = (String)Class.forName("java.lang.Str
相关文档:
package Demo;
// 使用泛型统一传入的参数类型
class Info28<T> {
private T var; // 此类型由外部决定
public T getVar() {
return this.var;
}
public void setVar(T var) {
this.var = var;
}
public String toString() { // 覆写Object类中的toString()方法
return this.var.toString();
......
导入配置jar包 substance.jar
然后在frame的主函数 加入如下代码
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
try {
UIManager.setLookAndFeel(new org.jvnet.substance.skin.SubstanceModerateLookAndFeel()) ; ......
基本操作
一、创建文件
拟生成一个名为“测试数据.xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下:
/*
* Created on Dec 30, 2007
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Cod ......
Java数据类型
Hibernate数据类型
标准SQL数据类型
byte
byte
TINYINT
short
short
SMALLINT
int
integer
INGEGER
long
long
BIGINT
float
float
FLOAT
double
double
DOUBLE
java.math.BigDecimal
big_decimal
NUMERIC
char, java.lang.Character
character
CHAR(1)
boolean, java.lang.Boole ......