> 文档中心 > Learning to use generic types

Learning to use generic types


Creat an arry of object type

class Test{    Object[] arry=new Object[20];    public Object getArry(int site) { return arry[site];    }    public void setArry(int site,int value) { this.arry[site] = value;    }    public static void main(String[] args) { Test test=new Test(); test.setArry(5,0); int val=(int)test.getArry(0);//1.you must conversion its type to int  System.out.println(val);    }}

But ,more often ,we want it to be able to hold only one data type.

Genericty's main purpose:

 

public class Genericity {//表示当前的类是泛型类    //T[]arr=new T[20];    T[]arr=(T[])new Object[20];//1.    public T getArr(int site) { return arr[site];    }    public void setArr(int site,T value) { this.arr[site] = value;    }    public static void main(String[] args) { Genericity genericity=new Genericity();     //2.When do parameters  need to be passed? genericity.setArr(0,20); int val=genericity.getArr(0); System.out.println(val);    }}

 Please think about:

 

complex

 

Example :Please use a generic classes to find the biggest element in the arry

public class GenericityTwo<T extends Comparable> {    public  T Compare(T[]arry){ T max=arry[0]; for (int i = 0; i 0){  max=arry[i];     } } return max;    }    public static void main(String[] args) { GenericityTwo genericity=new GenericityTwo(); Integer[]arry={20,21,22,23}; int ret=genericity.Compare(arry); System.out.println(ret);    }}

use a static method in the generic class

 class Univversal<T extends Comparable>{    public static <T extends Comparable> T compare(T[]arry){ T max=arry[0]; for (int i = 0; i 0){  max=arry[i];     } } return max;    }    public static void main(String[] args) {Integer[]arry={20,21,22,23}; int ret=Univversal.compare(arry); System.out.println(ret);    }}

public class Message {    public T message;    public T getMessage() { return message;    }    public void setMessage(T message) { this.message = message;    }    public static void main(String[] args) { Message message=new Message(); message.setMessage("通配符"); fun(message);    }    public static void fun(Message message)///{ String word=message.getMessage();    }}

 public static void fun(Message message)Accept all types

 

 

class Food{}class Fruit extends Food{}class Apple extends Fruit{}class Banana extends Fruit{}public class MessageTwo {    public T message;    public T getMessage() { return message;    }    public void setMessage(T message) { this.message = message;    }    public static void main(String[] args) { Message message=new Message(); message.setMessage(new Apple()); fun(message); Message message2 = new Message() ; message2.setMessage(new Banana()); fun(message2);    }    public static void fun(Message message){ System.out.println(message.getMessage());    }}

 

 Please thiking about:  

 

 

  Please thiking about: