`
yunhaifeiwu
  • 浏览: 163046 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

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

    博客分类:
  • java
阅读更多
简述
在泛型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的泛型设计,然后再来看本例,会有收获!



========================================================================
分享到:
评论

相关推荐

    泛型程式设计与STL.pdf

    - **标题与描述中的核心概念**:标题“泛型程式设计与STL”与描述中提到的“欢迎下载”,简明地表达了这份文档的主要内容是关于泛型编程与标准模板库(STL)的介绍和学习资料。 - **背景意义**:随着软件开发的需求日...

    简明NUnit使用

    public class MyGenericTestFixture&lt;T&gt; { [Test] public void TestMethod() { // ... } } ``` ### 重置与设置 `SetUp`和`TearDown`方法在每个测试之前和之后运行,可以用来准备和清理测试环境: ```csharp ...

    VC#编程思想PDF,非常简明基础的程序,很适合初学者

    6. **集合与数组**:学习如何使用ArrayList、List&lt;T&gt;、Dictionary&lt;TKey, TValue&gt;等集合类型,以及一维、多维数组的创建和操作。 7. **文件与流**:了解如何读写文件,以及使用不同的流进行数据传输,如FileStream、...

    Java大学简明教程 源代码

    Java大学简明教程源代码是面向初学者和在校大学生的一份宝贵资源,它涵盖了Java编程的基础到进阶知识。这份教程旨在帮助学习者理解和掌握Java语言的核心概念,通过实际的源代码示例来加深理解。 Java是一种广泛使用...

    C#简明教程(楚广明)

    8. **泛型**:泛型类、泛型接口、泛型方法,提高代码复用性和类型安全性。 9. **异步编程**:async/await关键字,Task类,用于实现非阻塞I/O和并发执行,提升程序性能。 10. **.NET框架**:了解.NET框架的组成部分...

    C++程序设计简明教程(第二版)》电子教案,物超所值,机不可失,多多捧场

    在教程中,你会学习到类(class)、对象(object)、封装(encapsulation)、继承(inheritance)和多态(polymorphism)等核心概念。类是C++中定义自定义数据类型的工具,而对象则是类的实例。封装允许我们将数据和...

    Java大学简明教程——实例程序设计

    Java大学简明教程——实例程序设计是一本专为初学者设计的编程教材,它通过丰富的实例来引导读者深入理解Java编程语言。这本书的核心目标是帮助新手快速掌握Java的基础概念和编程技巧,从而能够独立地进行程序设计。...

    C++简明教程

    1. 类(Class):类是对象的蓝图,定义了一组属性(成员变量)和行为(成员函数)。 2. 对象(Object):类的实例,具有类定义的属性和行为。 3. 构造函数与析构函数:构造函数在创建对象时自动调用,析构函数在对象...

    Java编程风格与命名规范整理

    泛型应该尽量简明扼要(最好是一个字母),以利于与普通的 class 或 interface 区分。Container 中的 Element 应该用 E 表示;Map 里面的 key 用 K 表示,value 用 V 表示;Type 用 T 表示;异常用 X 表示。 类命名...

    C++ 14标准 简明教程.zip_c哩

    本简明教程将聚焦于C++ 14的核心改进和新功能。 1. **通用引用(Generic Lambdas)** C++ 14引入了通用引用,使得lambda表达式可以更加灵活。在C++ 11中,lambda只能捕获其所在作用域内的变量,而在C++ 14中,通过...

    C#简明教程

    通过关键字`class`定义类,`new`关键字实例化对象。 二、面向对象特性 1. 封装:通过访问修饰符(public, private, protected, internal)实现数据的隐藏,保护内部实现细节。 2. 继承:子类可以继承父类的属性和...

    lite-note:简明笔记

    "lite-note:简明笔记"是一款基于TypeScript开发的轻量级笔记应用,旨在提供一个简洁、高效的笔记环境,让使用者能够快速记录和整理思绪。这个应用可能包含了前端开发的各种技术,如HTML、CSS和JavaScript的高级形式...

    C#基础知识培训.ppt

    * 从2.0版本开始,对泛型提供了更完整的支持 * 与Web应用开发紧密地结合 * 强大的类库支持(微软.Net Framework) * 发展多种应用程序(ASP.NET、WebService等) * 非常强的类型安全 * 很好地融合了Visual Basic的...

    simplenodeapp

    "简明Node.js应用"(simplenodeapp)是一个基于TypeScript开发的项目,它展示了如何使用TypeScript构建一个基础的Node.js应用程序。TypeScript是JavaScript的一个超集,提供了静态类型、类、接口等特性,提升了代码...

Global site tag (gtag.js) - Google Analytics