泛型中,Class<T>简明获得

简述
在泛型Dao设计中,常常需要得到参数T的类型,以便实例化,或传给其他框架。
实际上,参数T的类型的获得非常简单。不像网上传言,无法获得,至少java 6中很简单(在5中没测试过)
[b] [color=blue] [size=medium]

[/size] [/color] [/b]
spring允许JavaBean的属性是泛型。
例:
[color=brown][b]假定[/b][/color]一个JavaBean中有一个属性:
private Class<T> pojoClass //注意当然有setter属性,这里略。


[color=brown][b]则[/b][/color]在spring的配置中,相关属性可如下写
<property name=" pojoClass " value="model.User"/>

其中:model.User是类名。

===============================[b][size=medium][color=blue]正文[/color][/size][/b]===============================================


[b] [color=blue] [size=medium]精要:
[/size] [/color] [/b]
[size=medium]
[b][color=darkred]1 类型名字符串 ——> Class<T>
Class<T>  cls=(Class<T>) Class.forName(“className”);

2 Class<T>——>类型名字符串
cls.getName();  //其中 cls类型为Class<T>[/color][/b][/size]

[b] [color=blue] [size=medium]
完整测试样例:
[/size] [/color] [/b]
这是一个简单的工厂泛型。
在工厂构造函数中,增加一个字符串参数------ T的类型名。最大好处时,在spring注入时,没有必要的担心spring不忠实执行。
本例没有展示”Class<T>——>类型名字符串”, 在调试窗口,自行验证吧。

package jap1;
public class TestFactory<T> {
private Class <T> cls;
public String testabc="";

//---------------注意构造函数传的是一个类型名------------------------
public TestFactory(String clsName) throws ClassNotFoundException{
cls=(Class<T>) Class.forName(clsName);
}

//---------生成了cls的实例--------------------------------------------
//---------汗, 由类型名一样能生成cls的实例,如:-----------------------
//---------Class.forName(clsName).newInstance()-----------------------
//--------------------------------------------------------------------
public T getInstance() throws InstantiationException,
IllegalAccessException{

return cls.newInstance();
}


public static void main(String[] args)
throws ClassNotFoundException,
InstantiationException, IllegalAccessException {

TestFactory tf=new TestFactory(String.class.getName().toString());
String aa=(String)tf.getInstance();

System.out.println(aa);
}
}



[color=darkblue]
[size=medium]注:如有不太明白者,建议先看Dao的泛型设计,然后再来看本例,会有收获![/size][/color]


========================================================================
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值