初识Java中的Generator 快来打我* 2021-07-25 19:19 203阅读 0赞 说到在java中创建类的对象,一般都会想到用new关键字来实现。但是在某些特定情况下使用new来创建对象会显得更加麻烦,尤其在给容器初始化赋值的时候。 最近在看《Thinking in Java》这本书时,对容器类有了更加深入的理解,而在使用对象填充容器时遇到了Generator这个知识点, 通过使用Generator,可以很方便地为任何类提供类的对象,而不是通过new的方式。下面通过一个实例演示学习的过程。 1、申明一个Generator接口,提供一个next()方法,用以返回一个新的类对象。 public interface Generator<T> { T next(); } 2、定义一个BasicGenerator类,对Generator接口进行实现,用以生成某个类的对象。通过create()方法创建新的对象,使用泛型参数 package generator; /** * @author * @version * 一个通用的generator */ public class BasicGenerator<T> implements Generator<T> { private Class<T> type; public BasicGenerator(Class<T> type){ this.type = type; } @Override public T next(){ try{ return type.newInstance(); }catch(Exception e){ throw new RuntimeException(e); } } public static <T> Generator<T> create(Class<T> type){ return new BasicGenerator<T>(type); } } 3、定义一个具有默认构造器的简单类:这个类CountedObject能够实现计数功能,告诉我们创建了几个CountedObject实例,并通过toString()方法打印其编号。 package generator; /** * @author * @version */ public class CountedObject { private static long counter = 0; private final long id = counter++; public long id(){ return id; } public String toString(){ return "CountedObject " + id; } } 4、此时,可以使用BasicGenerator很容易地为CountedObject类创建一个Generator: package generator; /** * @author * @version */ public class BasicGeneratorDemo { public static void main(String[] args) { Generator<CountedObject> gen = BasicGenerator.create(CountedObject.class); for (int i = 0; i < 5; i++) { System.out.println(gen.next()); } } } 可以看到,我们在给CountedObject类创建实例时并没有一个一个通过new去创建,使用Generator方便了许多。通过传入泛型参数,也提高了其通用性。 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Nhb25pdW5pdTI1_size_16_color_FFFFFF_t_70][] [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Nhb25pdW5pdTI1_size_16_color_FFFFFF_t_70]: /images/20210725/1b8fd266cdf342f8b084e10aef241dc0.png
相关 初识java 目录 一、Java语言概述 1.1Java的含义 1.2Java语言的重要性 1.3Java语言发展历史 1.4Java语言特性 1.5Java开发环境的安装 二 Bertha 。/ 2024年03月22日 19:53/ 0 赞/ 125 阅读
相关 初识Java 一、Java语言概述 1.1 Java是什么 > Java是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义 > 不仅如此,Java还是一个有一 我不是女神ヾ/ 2024年02月21日 11:13/ 0 赞/ 70 阅读
相关 初识Java 目录 一、Java语言概述 1、Java是什么? 2、 Java语言发展简史 二、第一个Java程序 1、简单的"HelloWorld 2、运行Java 你的名字/ 2023年10月04日 21:30/ 0 赞/ 27 阅读
相关 初识Java Java简介 Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。由 James 不念不忘少年蓝@/ 2023年09月24日 19:53/ 0 赞/ 90 阅读
相关 初识Java Java Java 是一种可以撰写跨平台应用程序的面向对象的程序设计语言,是1995年SUN公司推出的一门高级编程语言,是面向互联网的语言,WEB应用程序首选的语言。 我会带着你远行/ 2022年12月26日 11:25/ 0 赞/ 164 阅读
相关 初识JAVA Java的起源: Java之父:James Gosling 1995年5.23日正式诞生;Java的形象代表图标 :“一杯热气腾腾的咖啡 水深无声/ 2022年08月09日 04:29/ 0 赞/ 375 阅读
相关 初识java > 注:本人最近在复习整理java开发相关的知识,做java开发两年多的时间了,接触了很多东西,最近考虑整理下来供自己也可以供大家参考,希望大家共同进步。博客会不定时更新补充。 末蓝、/ 2022年06月05日 12:17/ 0 赞/ 298 阅读
相关 初识java 新的学期初识Java,在这一周的Java学习中学习到了两种排序的方法:冒泡法和选择法排序 首先说一下冒泡法 例如一组数据5 9 3 1 6从小到大排列 第一轮 骑猪看日落/ 2022年05月28日 04:55/ 0 赞/ 409 阅读
相关 初识Java 今天算是从c++里脱身了,进入了Java程序员的行列,虽然之前对Java没有了解过,但是出于对c++编程的理解,除了刚开始对编辑环境以及对Java的语法不太熟悉 女爷i/ 2022年05月20日 09:57/ 0 赞/ 338 阅读
相关 初识Java中的Generator 说到在java中创建类的对象,一般都会想到用new关键字来实现。但是在某些特定情况下使用new来创建对象会显得更加麻烦,尤其在给容器初始化赋值的时候。 最近在看《Think 快来打我*/ 2021年07月25日 19:19/ 0 赞/ 204 阅读
还没有评论,来说两句吧...