1.泛型类
1.1普通泛型
package test.lujianing; /** * 泛型类 * @param*/ class Test { 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 t1 = new Test (); t1.setValue(5); Integer i = t1.getValue(); System.out.println(i); //测试Double泛型 Test t2 = new Test (); t2.setValue(5.55D); Double d = t2.getValue(); System.out.println(d); //测试String泛型 Test t3 = new Test (); t3.setValue("hello world"); String str =t3.getValue(); System.out.println(str); } }
输出结果:
立即学习“Java免费学习笔记(深入)”;
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{ private Map map=new HashMap (); 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 t = new TestKV (); t.put("name","jianing"); System.out.println(t.get("name")); TestKV t2 = new TestKV (); t2.put("age",24); System.out.println(t2.get("age")); } }
输出结果:
立即学习“Java免费学习笔记(深入)”;
jianing 24
2.泛型接口
package test.lujianing; /** * 泛型接口 * @param*/ public interface TestImpl { public void setValue(T t); public T getValue(); }
输出结果:
立即学习“Java免费学习笔记(深入)”;
1 hello word
3.泛型方法
package test.lujianing;
/**
* 泛型方法类
*/
class TestMethod{
/**
* 泛型方法
*/
public T getValue(Object s,Class 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免费学习笔记(深入)”;
java.lang.Integer 30 java.lang.Double 40.0022
4.限制泛型
在上面的例子中,没有限制class Test
5.通配泛型
package test.lujianing;
import java.util.HashMap;
import java.util.Map;
/**
* 通配泛型
*/
public class TestFive {
public static void main(String[] args) {
Map> map = new HashMap>();
map.put("Integer",Integer.class);
map.put("Double",Double.class);
for (Map.Entry> entry : map.entrySet()) {
System.out.println("key:" + entry.getKey() + " value:" + entry.getValue());
}
}
} 输出结果:
立即学习“Java免费学习笔记(深入)”;
key:Double value:class java.lang.Double key:Integer value:class java.lang.Integer
简单的例子:针对1.1的例子
public static void main(String[] args) {
//测试Integer泛型
Test t1 = new Test();
t1.setValue(5);
fun(t1);
//测试Double泛型
Test t2 = new Test();
t2.setValue(5.55D);
fun(t2);
}
public static void fun(Test> t){
System.out.println("通配泛型"+t.getValue());
} 输出结果:
立即学习“Java免费学习笔记(深入)”;
java.lang.Integer 通配泛型5 java.lang.Double 通配泛型5.55
6.补充
在泛型中,可能会遇到
更多多个java泛型示例分享相关文章请关注PHP中文网!











