下面的例子可以为任何类构造一个对象。
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方法中用它进行类型推断。
分享到:
相关推荐
JVM的TypeScript定义生成器该库使用Kotlin反射生成涵盖一组Kotlin和Java类的TypeScript定义。 当数据类被序列化为JSON并在JavaScript或TypeScript Web前端中处理时,TypeScript定义非常有用,因为它们可以在许多IDE...
* 实现了一个 **通用mapper**,免写 SQL,可进行单表和多表关联查询,自动插入一对多/多对一对象(注解配置关联对象,结合 MyBatis Generator ) * 实现了一个 **BaseService 类** ,集成了多条件的查询和增改删...
- **代码生成**:最后,生成器(Code Generator)将抽象语法树转换为目标机器语言,这里的目标语言是x86汇编。 2. **C++编程**: - **面向对象编程**:C++支持类、对象、封装、继承和多态等面向对象特性,适合...
标题中的“简单的电费账单系统生成器”是一个小型应用程序,旨在帮助用户自动化计算电费。它可能包含用户输入的电表读数、单价等信息,并基于这些数据生成账单。使用C++作为编程语言,该系统利用了C++的面向对象特性...
Spring+SpringMVC+Mybatis框架集成公共模块,包括公共配置、MybatisGenerator扩展插件、通用BaseService、工具类等。 > zheng-admin 基于bootstrap实现的响应式Material Design风格的通用后台管理系统,`zheng`...
- **代码生成器(Code Generator)**:将优化后的抽象语法树转换为目标机器代码。 2. **C++的特性** C++是一种静态类型的、编译型的、通用的、大小写敏感的、不仅支持过程化编程,也支持面向对象编程和泛型编程的...
### TypeScript 快速入门知识点概览 #### 1. TypeScript 简介 ...通过以上知识点的概述,读者可以对 TypeScript 的主要特性和用法有一个全面的认识,从而更好地利用 TypeScript 构建高质量的应用程序。
4. **Sequence与Generator**:Swift的标准库提供了`Sequence`和`Generator`协议,允许开发者创建自己的序列和生成器,用于按需迭代数据。这对于函数式编程中的惰性计算和流式处理至关重要。 5. **Optionals**:...
"SP, OOP, GP.txt"可能涉及了软件设计中的模式,如策略模式(Strategy)、观察者模式(Observer)和生成器模式(Generator)。这些设计模式是解决特定问题的标准化解决方案,能够提高代码的可读性和可维护性。 "C++...
jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...
jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...
C++是C语言的一个超集,它添加了面向对象编程(OOP)和泛型编程等特性。在将TINY编译器从C转换为C++时,需要注意以下几点: 1. **类与对象**:C++引入了类的概念,允许定义包含数据和方法的对象。在C中,你需要使用...
1. **类与对象**:C++是面向对象的语言,因此地图生成器可能通过类来封装地图的属性和行为,比如`Map`类,包含地图的尺寸、地形类型等属性,以及生成、显示地图的方法。 2. **文件操作**:地图的保存和加载可能涉及...
jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...
jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...
jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...
jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...
jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...
jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...
jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...