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: