49. Generics
49. Generics
パラメータ化された型
L:\lesson118\test.java
class test { public static void main(String args[]) { Value<String> obj1 = new Value<String>("kitty on your lap"); Value<Integer> obj2 = new Value<Integer>(new Integer(10)); KeyValue<String, Integer> obj3 = new KeyValue<String, Integer>("keyValue", new Integer(20)); System.out.println("obj1 type = " + obj1.getValue().getClass()); System.out.println("value = " + obj1.getValue()); System.out.println("obj2 type = " + obj2.getValue().getClass()); System.out.println("value = " + obj2.getValue()); System.out.println("key=" + obj3.getKey()); System.out.println("value=" + obj3.getValue()); } } class Value<T> { private T value; public Value(T value) { this.value = value; } public T getValue() { return value; } } class KeyValue <K, V> { private K key; private V value; public KeyValue(K key , V value) { this.key = key; this.value = value; } public K getKey() { return key; } public V getValue() { return value; } }
実行結果
L:\lesson118>java test
obj1 type = class java.lang.String
value = kitty on your lap
obj2 type = class java.lang.Integer
value = 10
key=keyValue
value=20
メソッドに型変数を指定
L:\lesson119\test.java
class test { public static void main(String args[]) { write("Kitty on your lap"); write(new Integer(10)); } static <T> void write(T value) { System.out.println(value); } }
実行結果
L:\lesson119>java test
Kitty on your lap
10
インタフェースをパラメータ化
L:\lesson120\test.java
class test { public static void main(String args[]) { A objA = new A(); B objB = new B(); objA.printValue("Kitty on your lap"); objB.printValue(new StringBuffer("Kitty on your lap")); } } interface IGenerics <T> { void printValue(T value); } class A implements IGenerics<String> { public void printValue(String value) { System.out.println(getClass() + ".printValue() = " + value); } } class B implements IGenerics<StringBuffer> { public void printValue(StringBuffer value) { value.append(" : "); value.append(getClass()); value.append(".printValue()"); System.out.println(value); } }
実行結果
L:\lesson120>java test
class A.printValue() = Kitty on your lap
Kitty on your lap : class B.printValue()