1. 일반 클래스
1.1 일반 일반
package test.lujianing; /** * 泛型类 * @param <T> */ class Test<T>{ private T obj; public void setValue(T obj){ this.obj =obj; } public T getValue(){ System.out.println(obj.getClass().getName()); return obj; } } /** * 测试泛型类 */ public class TestOne { public static void main(String[] args) { //测试Integer泛型 Test<Integer> t1 = new Test<Integer>(); t1.setValue(5); Integer i = t1.getValue(); System.out.println(i); //测试Double泛型 Test<Double> t2 = new Test<Double>(); t2.setValue(5.55D); Double d = t2.getValue(); System.out.println(d); //测试String泛型 Test<String> t3 = new Test<String>(); t3.setValue("hello world"); String str =t3.getValue(); System.out.println(str); } }
출력 결과:
java.lang.Integer 5 java.lang.Double 5.55 java.lang.String hello world
1.2 K/V 일반
package test.lujianing; import java.util.HashMap; import java.util.Map; /** * Created by Administrator on 14-3-30. */ class TestKV<K,V>{ private Map<K,V> map=new HashMap<K, V>(); public void put(K k, V v) { map.put(k,v); } public V get(K k) { return map.get(k); } } public class TestFour{ public static void main(String[] args) { TestKV<String,String> t = new TestKV<String, String>(); t.put("name","jianing"); System.out.println(t.get("name")); TestKV<String,Integer> t2 = new TestKV<String, Integer>(); t2.put("age",24); System.out.println(t2.get("age")); } }
출력 결과:
jianing 24
2. 일반 인터페이스
package test.lujianing; /** * 泛型接口 * @param <T> */ public interface TestImpl<T> { public void setValue(T t); public T getValue(); }
출력 결과:
1 hello word
3. 일반 메서드
package test.lujianing; /** * 泛型方法类 */ class TestMethod{ /** * 泛型方法 */ public <T>T getValue(Object s,Class<T> clazz) { System.out.println(clazz.getName()); T t =null; if(clazz.getName().equals("java.lang.Integer")){ Double d = Double.parseDouble(s.toString()); int i =d.intValue(); t=(T)new Integer(i); } if(clazz.getName().equals("java.lang.Double")){ t=(T)new Double(s.toString()); } return t; } } /** * 泛型方法测试类 */ public class TestThree { public static void main(String[] args) { TestMethod t = new TestMethod(); int i =t.getValue("30.0011",Integer.class); System.out.println(i); double d =t.getValue("40.0022",Double.class); System.out.println(d); } }
출력 결과:
java.lang.Integer 30 java.lang.Double 40.0022
4. generics
위의 예에서는 Test
5. 와일드카드 제네릭
package test.lujianing; import java.util.HashMap; import java.util.Map; /** * 通配泛型 */ public class TestFive { public static void main(String[] args) { Map<String,Class<? extends Number>> map = new HashMap<String,Class<? extends Number>>(); map.put("Integer",Integer.class); map.put("Double",Double.class); for (Map.Entry<String,Class<? extends Number>> entry : map.entrySet()) { System.out.println("key:" + entry.getKey() + " value:" + entry.getValue()); } } }
출력 결과:
key:Double value:class java.lang.Double key:Integer value:class java.lang.Integer
간단한 예: 1.1의 예
public static void main(String[] args) { //测试Integer泛型 Test<Integer> t1 = new Test<Integer>(); t1.setValue(5); fun(t1); //测试Double泛型 Test<Double> t2 = new Test<Double>(); t2.setValue(5.55D); fun(t2); } public static void fun(Test<?> t){ System.out.println("通配泛型"+t.getValue()); }
출력 결과:
java.lang.Integer 通配泛型5 java.lang.Double 通配泛型5.55
6. 보충
generic에서는
더 많은 Java 일반 예제 및 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!