| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
編集の要約なし
GenericsTest4 me = new GenericsTest4();
GenTypeTest<&lt;Date> &gt; gd = me.new GenTypeTest<&lt;Date>&gt;(); for (int i=0; i<&lt;5; i++) {
try {
Thread.sleep(500);
}
}
private class GenTypeTest<&lt;T> &gt; { // クラスの型
private T member; // インスタンス変数の型
private T[] members; // 配列の型
private List<&lt;T> &gt; memList // コレクションに渡す = new ArrayList<&lt;T>&gt;();
private void addMember(T member) { // 引数
memList.add(member);
}
=====継承関係を指定=====
* <&lt;T extends [Class or Interface]> &gt; で、指定クラス(インターフェース)の派生クラスであることを指定* Clazz<&lt;? super [Class or Interface]> &gt; で、Clazzが、指定クラス(インターフェース)の基底クラスであることを指定
import java.util.ArrayList;
import java.util.Collections;
GenericsTest5 me = new GenericsTest5();
CompareUtil<&lt;Double> &gt; dc = me.new CompareUtil<&lt;Double>&gt;();
dc.addNum(1.23);
dc.addNum(2.34);
}
// T型の基底クラス(T型を含む)に適応する Comparable を継承した T型
private class CompareUtil<&lt;T extends Comparable<&lt;? super T>> &gt;&gt; { List<&lt;T> &gt; numList = new ArrayList<&lt;T>&gt;();
public void addNum(T num) {
numList.add(num);
// メソッドで、ジェネリクス型を使う
// いろいろバージョンをオーバーロードしなくてもよい
public static <&lt;T extends Number> &gt; T log10(T num) {
double ret = Math.log10(num.doubleValue());
return (T) new Double(ret);
====拡張forループで使用する====
Messageクラスを保持するMessagesクラスを拡張forループに対応させる
*Iterable<&lt;Message>&gt;の実装
public class Messages implements Iterable<&lt;Message> &gt; { private List<&lt;Message> &gt; messages; private List<&lt;Message> &gt; getMessages(){
if (this.messages == null) {
this.messages = new ArrayList<&lt;Message>&gt;();
}
return this.messages;
}
public Iterator<&lt;Message> &gt; iterator() {
return getMessages().iterator();
}

案内メニュー