Java汎型--汎型インターフェース
Java泛型--目次
汎型もインターフェースに適用できます。例えば、ジェネレータ(Generator)は、オブジェクトの作成を専門とするクラスです。このジェネレータは、追加の情報なしに、新しいオブジェクトの作成方法を知ることができます。インターフェースは以下の通りです。
汎型もインターフェースに適用できます。例えば、ジェネレータ(Generator)は、オブジェクトの作成を専門とするクラスです。このジェネレータは、追加の情報なしに、新しいオブジェクトの作成方法を知ることができます。インターフェースは以下の通りです。
/**
*
*
*/
public interface Generator<T> {
T create();
}
/**
* ---
*
*/
class Fabonacci implements Generator<Integer>{
//
private int count = 0;
// fabonacci
private int fab(int n){
if(n < 2){
return 1;
}else{
return fab(n - 1) + fab(n - 2);
}
}
// :
@Override
public Integer create() {
return fab(count++);
}
public static void main(String[] args) {
Fabonacci fabonacci = new Fabonacci();
for(int i = 0; i < 10; i++){
System.out.printf(fabonacci.create() + " ");
}
}
}
/* :
1 1 2 3 5 8 13 21 34 55
*/
さらに、私たちはiterableインターフェースを想起するかもしれません。このクラスを再構築し、必要なインターフェースを実現するためにアダプターを作成します。class IteratorFabonacci extends Fabonacci implements Iterable<Integer> {
private int size;
public IteratorFabonacci(int size) {
this.size = size;
}
public Iterator<Integer> iterator() {
return new Iterator<Integer>() {
@Override
public boolean hasNext() {
return size > 0;
}
@Override
public Integer next() {
size--;
return create();
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
};
}
public static void main(String[] args) {
IteratorFabonacci iteratorF = new IteratorFabonacci(10);
for (int number : iteratorF) {
System.out.printf(number + " ");
}
}
}
/* :
1 1 2 3 5 8 13 21 34 55
*/