简述
在泛型Dao设计中,常常需要得到参数T的类型,以便实例化,或传给其他框架。
实际上,参数T的类型的获得非常简单。不像网上传言,无法获得,至少java 6中很简单(在5中没测试过)
附
spring允许JavaBean的属性是泛型。
例:
假定一个JavaBean中有一个属性:
private Class<T> pojoClass //注意当然有setter属性,这里略。
则在spring的配置中,相关属性可如下写
<property name=" pojoClass " value="model.User"/>
其中:model.User是类名。
===============================
正文===============================================
精要:
[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]
完整测试样例:
这是一个简单的工厂泛型。
在工厂构造函数中,增加一个字符串参数------ 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);
}
}
注:如有不太明白者,建议先看Dao的泛型设计,然后再来看本例,会有收获!
========================================================================
分享到:
- 2008-10-31 11:30
- 浏览 13629
- 评论(0)
- 论坛回复 / 浏览 (0 / 5712)
- 查看更多
相关推荐
- **标题与描述中的核心概念**:标题“泛型程式设计与STL”与描述中提到的“欢迎下载”,简明地表达了这份文档的主要内容是关于泛型编程与标准模板库(STL)的介绍和学习资料。 - **背景意义**:随着软件开发的需求日...
public class MyGenericTestFixture<T> { [Test] public void TestMethod() { // ... } } ``` ### 重置与设置 `SetUp`和`TearDown`方法在每个测试之前和之后运行,可以用来准备和清理测试环境: ```csharp ...
6. **集合与数组**:学习如何使用ArrayList、List<T>、Dictionary<TKey, TValue>等集合类型,以及一维、多维数组的创建和操作。 7. **文件与流**:了解如何读写文件,以及使用不同的流进行数据传输,如FileStream、...
Java大学简明教程源代码是面向初学者和在校大学生的一份宝贵资源,它涵盖了Java编程的基础到进阶知识。这份教程旨在帮助学习者理解和掌握Java语言的核心概念,通过实际的源代码示例来加深理解。 Java是一种广泛使用...
8. **泛型**:泛型类、泛型接口、泛型方法,提高代码复用性和类型安全性。 9. **异步编程**:async/await关键字,Task类,用于实现非阻塞I/O和并发执行,提升程序性能。 10. **.NET框架**:了解.NET框架的组成部分...
在教程中,你会学习到类(class)、对象(object)、封装(encapsulation)、继承(inheritance)和多态(polymorphism)等核心概念。类是C++中定义自定义数据类型的工具,而对象则是类的实例。封装允许我们将数据和...
Java大学简明教程——实例程序设计是一本专为初学者设计的编程教材,它通过丰富的实例来引导读者深入理解Java编程语言。这本书的核心目标是帮助新手快速掌握Java的基础概念和编程技巧,从而能够独立地进行程序设计。...
1. 类(Class):类是对象的蓝图,定义了一组属性(成员变量)和行为(成员函数)。 2. 对象(Object):类的实例,具有类定义的属性和行为。 3. 构造函数与析构函数:构造函数在创建对象时自动调用,析构函数在对象...
泛型应该尽量简明扼要(最好是一个字母),以利于与普通的 class 或 interface 区分。Container 中的 Element 应该用 E 表示;Map 里面的 key 用 K 表示,value 用 V 表示;Type 用 T 表示;异常用 X 表示。 类命名...
本简明教程将聚焦于C++ 14的核心改进和新功能。 1. **通用引用(Generic Lambdas)** C++ 14引入了通用引用,使得lambda表达式可以更加灵活。在C++ 11中,lambda只能捕获其所在作用域内的变量,而在C++ 14中,通过...
通过关键字`class`定义类,`new`关键字实例化对象。 二、面向对象特性 1. 封装:通过访问修饰符(public, private, protected, internal)实现数据的隐藏,保护内部实现细节。 2. 继承:子类可以继承父类的属性和...
"lite-note:简明笔记"是一款基于TypeScript开发的轻量级笔记应用,旨在提供一个简洁、高效的笔记环境,让使用者能够快速记录和整理思绪。这个应用可能包含了前端开发的各种技术,如HTML、CSS和JavaScript的高级形式...
* 从2.0版本开始,对泛型提供了更完整的支持 * 与Web应用开发紧密地结合 * 强大的类库支持(微软.Net Framework) * 发展多种应用程序(ASP.NET、WebService等) * 非常强的类型安全 * 很好地融合了Visual Basic的...
"简明Node.js应用"(simplenodeapp)是一个基于TypeScript开发的项目,它展示了如何使用TypeScript构建一个基础的Node.js应用程序。TypeScript是JavaScript的一个超集,提供了静态类型、类、接口等特性,提升了代码...