class Point<T>{//此处可以随便写标识符号,T是type的简称 private T var;//var的类型由T指定,即:由外部指定 public T getVar(){//返回值的类型由外部决定 return var; } public void setVar(T var){//设置的类型也由外部决定 this.var = var; } }; public class GenericsDemo06{ public static void main(String args[]){ Point<String> p = new Point<String>();//里面的var类型为String类型 p.setVar("it");//设置字符串 System.out.println(p.getVar().length());//取得字符串的长度 } }; ---------------------------------------------------------- class Notepad<K,V>{// 此处指定了两个泛型类型 private K key;// 此变量的类型由外部决定 private V value;//此变量的类型由外部决定 public K getKey(){ return this.key ; } public V getValue(){ return this.value ; } public void setKey(K key){ this.key = key ; } public void setValue(V value){ this.value = value ; } }; public class GenericsDemo09{ public static void main(String args[]){ Notepad<String,Integer> t = null;//定义两个泛型类型的对象 t = new Notepad<String,Integer>();//里面的key为String,value为Integer t.setKey("汤姆"; // 设置第一个内容 t.setValue(20);// 设置第二个内容 System.out.print("姓名;" + t.getKey());// 取得信息 System.out.print(",年龄;" + t.getValue());// 取得信息 } };
class Info<T> { private T var;//定义泛型变量 public void setVar(T var) { this.var = var; } public T getVar() { return this.var; } public String toString() {//直接打印 return this.var.toString(); } }; public class GenericsDemo14 { public static void main(String args[]) { Info<String> i = new Info<String>();//使用String为泛型类型 i.setVar("it");//设置内容 fun(i); } public static void fun(Info<?> temp) {//可以接收任意的泛型对象 System.out.println("内容:" + temp); } };
class Info<T>{ private T var;//定义泛型变量 public void setVar(T var){ this.var = var ; } public T getVar(){ return this.var ; } public String toString(){//直接打印 return this.var.toString() ; } }; public class GenericsDemo17{ public static void main(String args[]){ Info<Integer> i1 = new Info<Integer>();//声明Integer的泛型对象 Info<Float> i2 = new Info<Float>();//声明Float的泛型对象 i1.setVar(30);// 设置整数,自动装箱 i2.setVar(30.1f);//设置小数,自动装箱 fun(i1) ; fun(i2) ; } //只能接收Number及其Number的子类 public static void fun(Info<? extends Number> temp){ System.out.print(temp); } }; ---------------------------------------------------------- class Info<T>{ private T var ; // 定义泛型变量 public void setVar(T var){ this.var = var ; } public T getVar(){ return this.var ; } public String toString(){//直接打印 return this.var.toString() ; } }; public class GenericsDemo21{ public static void main(String args[]){ Info<String> i1 = new Info<String>();// 声明String的泛型对象 Info<Object> i2 = new Info<Object>();// 声明Object的泛型对象 i1.setVar("hello") ; i2.setVar(new Object()) ; fun(i1) ; fun(i2) ; } //只能接收String或Object类型的泛型 public static void fun(Info<? super String> temp){ System.out.print(temp) ; } };
class Info<T> { private T var;//定义泛型变量 public void setVar(T var) { this.var = var; } public T getVar() { return this.var; } public String toString() {//直接打印 return this.var.toString(); } }; public class GenericsDemo23 { public static void main(String args[]) { Info<String> i1 = new Info<String>();//泛型类型为String Info<Object> i2 = null; i2 = i1;//这句会出错 incompatible types } };
interface Info<T>{//在接口上定义泛型 public T getVar();//定义抽象方法,抽象方法的返回值就是泛型类型 } class InfoImpl<T> implements Info<T>{//定义泛型接口的子类 private T var;//定义属性 public InfoImpl(T var){//通过构造方法设置属性内容 this.setVar(var) ; } public void setVar(T var){ this.var = var ; } public T getVar(){ return this.var ; } }; public class GenericsDemo24{ public static void main(String arsg[]){ Info<String> i = null;// 声明接口对象 i = new InfoImpl<String>("汤姆");//通过子类实例化对象 System.out.println("内容:"+ i.getVar()) ; } }; ---------------------------------------------------------- interface Info<T>{//在接口上定义泛型 public T getVar();//定义抽象方法,抽象方法的返回值就是泛型类型 } class InfoImpl implements Info<String>{//定义泛型接口的子类 private String var;//定义属性 public InfoImpl(String var){//通过构造方法设置属性内容 this.setVar(var) ; } public void setVar(String var){ this.var = var ; } public String getVar(){ return this.var ; } }; public class GenericsDemo25{ public static void main(String arsg[]){ Info i = null; //声明接口对象 i = new InfoImpl("汤姆");//通过子类实例化对象 System.out.println("内容:"+ i.getVar()) ; } };
class Demo { public <T> T fun(T t) {//可以接收任意类型的数据 return t;//直接把参数返回 } }; public class GenericsDemo26 { public static void main(String args[]) { Demo d = new Demo();//实例化Demo对象 String str = d.fun("汤姆");//传递字符串 int i = d.fun(30);//传递数字,自动装箱 System.out.println(str);//输出内容 System.out.println(i);//输出内容 } };
class Info<T extends Number> {//指定上限,只能是数字类型 private T var;//此类型由外部决定 public T getVar() { return this.var; } public void setVar(T var) { this.var = var; } public String toString() {//覆写Object类中的toString()方法 return this.var.toString(); } }; public class GenericsDemo27 { public static void main(String args[]) { Info<Integer> i = fun(30); System.out.println(i.getVar()); } //方法中传入或返回的泛型类型由调用方法时所设置的参数类型决定 public static <T extends Number> Info<T> fun(T param) { Info<T> temp = new Info<T>();//根据传入的数据类型实例化Info temp.setVar(param);//将传递的内容设置到Info对象的var属性之中 return temp;//返回实例化对象 } };
class Info<T> {//指定上限,只能是数字类型 private T var;//此类型由外部决定 public T getVar() { return this.var; } public void setVar(T var) { this.var = var; } public String toString() {//覆写Object类中的toString()方法 return this.var.toString(); } }; public class GenericsDemo28 { public static void main(String args[]) { Info<String> i1 = new Info<String>(); Info<String> i2 = new Info<String>(); i1.setVar("HELLO");//设置内容 i2.setVar("汤姆");//设置内容 add(i1, i2); } public static <T> void add(Info<T> i1, Info<T> i2) { System.out.println(i1.getVar() + " " + i2.getVar()); } };
public class GenericsDemo30 { public static void main(String args[]) { Integer i[] = fun1(1, 2, 3, 4, 5, 6);//返回泛型数组 fun2(i); } public static <T> T[] fun1(T... arg) {//接收可变参数 return arg;//返回泛型数组 } public static <T> void fun2(T param[]) {//输出 System.out.print("接收泛型数组:"); for (T t : param) { System.out.print(t + "、"); } } };
class Info<T, V> {//接收两个泛型类型 private T var; private V value; public Info(T var, V value) { this.setVar(var); this.setValue(value); } public void setVar(T var) { this.var = var; } public void setValue(V value) { this.value = value; } public T getVar() { return this.var; } public V getValue() { return this.value; } }; class Demo<S> { private S info; public Demo(S info) { this.setInfo(info); } public void setInfo(S info) { this.info = info; } public S getInfo() { return this.info; } }; public class GenericsDemo31 { public static void main(String args[]) { Demo<Info<String, Integer>> d = null;//将Info作为Demo的泛型类型 Info<String, Integer> i = null;//Info指定两个泛型类型 i = new Info<String, Integer>("汤姆", 30);//实例化Info对象 d = new Demo<Info<String, Integer>>(i);//在Demo类中设置Info类的对象 System.out.println("内容一:" + d.getInfo().getVar()); System.out.println("内容二:" + d.getInfo().getValue()); } };
本文出自:http://www.cnblogs.com/sunwei2012/archive/2010/10/08/1845938.html