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

 

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方法中用它进行类型推断。