前回のブログ投稿で説明したイテレーターとは異なり、この記事ではジェネレーター Generator について説明します。両者には大きな違いがあります。イテレータはコンテナ内の要素を走査するために使用されます。Java 標準ライブラリには Iterator インターフェイスとその実装がありますが、ジェネレータはオブジェクトの作成に使用されません。
[注: ここでのジェネレーター Generator と、デザイン パターンのジェネレーター パターン (つまり、ビルダー パターン) は異なります]
ジェネレーター (Generator) です。オブジェクトの作成に特別に使用されるクラス
実際には、ファクトリメソッドパターンのアプリケーションであり、インターフェイスに適用されるジェネリックスの一種です
ジェネレーターを使用して新しいオブジェクトを作成する場合、オブジェクトを作成する必要はありませんパラメーターの使用 -> これはファクトリ メソッド パターンとの違いでもあります。ファクトリ メソッドには通常パラメーターが必要です
一般に、ジェネレーターは新しいオブジェクトを生成するために特別に使用されるメソッドを 1 つだけ定義します
Java 標準ライブラリには Generator インターフェイスが含まれていないため、ジェネレーターを独自に定義する必要があります。
[ジェネレーター]
/** - 生成器接口 - @author johnnie - @param <T> */ public interface Generator<T> { /** - 用以产生新对象 - @return */ public T next(); }
[サンプルコード]
/** - Generator 的实现类 - @author johnnie * */ public class PersonGenerator implements Generator<Person> { private Class[] types = new Class[]{Person.class}; public PersonGenerator() { } @Override public Person next() { try { // 利用反射生成 Person 对象 return (Person) types[0].newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return null; } public static void main(String[] args) { PersonGenerator generator = new PersonGenerator(); Person person = generator.next(); person.setId(0); person.setName("johnnie"); person.setSex("Man"); System.out.println(person); } }
[出力]
Person [id=0, name=johnnie, sex=Man]
以上がJava ノート: ジェネレーターの使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。