`
韩悠悠
  • 浏览: 839888 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

泛型讨论------一个更通用的对象生成器Generator

 
阅读更多

 下面的例子可以为任何类构造一个对象。

 

public interface Generator<T> { T next(); }


public class BasicGenerator<T> implements Generator<T> {
  private Class<T> type;
  public BasicGenerator(Class<T> type){ this.type = type; }
  public T next() {
    try {
      // Assumes type is a public class:
      return type.newInstance();
    } catch(Exception e) {
      throw new RuntimeException(e);
    }
  }
  
  public static <T> Generator<T> create(Class<T> type) {
    return new BasicGenerator<T>(type);
  }
}

 

这个类用于生产某个类的对象,这个类必须具备俩个特征。

1,它必须声明为public类型。

2。它必须具备默认无惨构造函数。

 

使用例子

 

public static void main(String[] args){

	Generator<String> gen = BasicGenerator.create(String.class);
	for(int i=0;i<10;i++){

		System.out.println(gen.next());
	}
}

 

可以看到,使用泛型方法创建Generator对象,大大减少了我们要编写的代码,java泛型要求传入Class 对象,以便在create方法中用它进行类型推断。

 

 

 

分享到:
评论

相关推荐

    ts-generator:从KotlinJavaJVM类生成TypeScript定义

    JVM的TypeScript定义生成器该库使用Kotlin反射生成涵盖一组Kotlin和Java类的TypeScript定义。 当数据类被序列化为JSON并在JavaScript或TypeScript Web前端中处理时,TypeScript定义非常有用,因为它们可以在许多IDE...

    基于JavaWEB+SSM+mysql框架构建的在线商城系统源码+数据库+项目说明(课程设计).zip

    * 实现了一个 **通用mapper**,免写 SQL,可进行单表和多表关联查询,自动插入一对多/多对一对象(注解配置关联对象,结合 MyBatis Generator ) * 实现了一个 **BaseService 类** ,集成了多条件的查询和增改删...

    基于C++实现编译器【100012866】

    - **代码生成**:最后,生成器(Code Generator)将抽象语法树转换为目标机器语言,这里的目标语言是x86汇编。 2. **C++编程**: - **面向对象编程**:C++支持类、对象、封装、继承和多态等面向对象特性,适合...

    简单的电费账单系统生成器使用C++源代码.zip

    标题中的“简单的电费账单系统生成器”是一个小型应用程序,旨在帮助用户自动化计算电费。它可能包含用户输入的电表读数、单价等信息,并基于这些数据生成账单。使用C++作为编程语言,该系统利用了C++的面向对象特性...

    单点登录源码

    Spring+SpringMVC+Mybatis框架集成公共模块,包括公共配置、MybatisGenerator扩展插件、通用BaseService、工具类等。 &gt; zheng-admin 基于bootstrap实现的响应式Material Design风格的通用后台管理系统,`zheng`...

    Compilers and Compiler Generators in C++.rar

    - **代码生成器(Code Generator)**:将优化后的抽象语法树转换为目标机器代码。 2. **C++的特性** C++是一种静态类型的、编译型的、通用的、大小写敏感的、不仅支持过程化编程,也支持面向对象编程和泛型编程的...

    typescript快速入门(79页PDF文档)

    ### TypeScript 快速入门知识点概览 #### 1. TypeScript 简介 ...通过以上知识点的概述,读者可以对 TypeScript 的主要特性和用法有一个全面的认识,从而更好地利用 TypeScript 构建高质量的应用程序。

    Swift-函数式编程-喵神著

    4. **Sequence与Generator**:Swift的标准库提供了`Sequence`和`Generator`协议,允许开发者创建自己的序列和生成器,用于按需迭代数据。这对于函数式编程中的惰性计算和流式处理至关重要。 5. **Optionals**:...

    讨论C++技术的几篇文章

    "SP, OOP, GP.txt"可能涉及了软件设计中的模式,如策略模式(Strategy)、观察者模式(Observer)和生成器模式(Generator)。这些设计模式是解决特定问题的标准化解决方案,能够提高代码的可读性和可维护性。 "C++...

    java开源包1

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包10

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    TINY编译器C++版

    C++是C语言的一个超集,它添加了面向对象编程(OOP)和泛型编程等特性。在将TINY编译器从C转换为C++时,需要注意以下几点: 1. **类与对象**:C++引入了类的概念,允许定义包含数据和方法的对象。在C中,你需要使用...

    Cpp_MapGenerator:一个C ++地图生成器,不使用任何噪音

    1. **类与对象**:C++是面向对象的语言,因此地图生成器可能通过类来封装地图的属性和行为,比如`Map`类,包含地图的尺寸、地形类型等属性,以及生成、显示地图的方法。 2. **文件操作**:地图的保存和加载可能涉及...

    java开源包11

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包2

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包3

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包6

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包5

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包4

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包8

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

Global site tag (gtag.js) - Google Analytics