泛型
泛型的好處
消除強制類型轉換。 泛型的一個附帶好處是,消除源代碼中的許多強制類型轉換。這使得代碼更加可讀,並且減少了出錯機會。
使用語法
2)同一種泛型可以對應多個版本(因爲參數類型是不確定的),不同版本的泛型類實例是不兼容的。
3)泛型的類型參數可以有多個。
4)泛型的參數類型可以使用extends語句來做類型限制(不管後面是接口還是類都用extent),例如<T extends superclass>。習慣上成爲“有界類型”。默認情況,extends object。
5)泛型的參數類型還可以是通配符類型(應對未知類型)。
例如Class<?> classType = Class.forName(ArrayList);
Class<?> classType = Class.forName(LinkedList);
簡單例子
public class GenericFoo<T> {
private T foo;
public T getFoo() {
return foo;
}
public void setFoo(T foo) {
this.foo = foo;
}
public static void main(String[] args) {
GenericFoo<Boolean> foo1 = new GenericFoo<Boolean>();
GenericFoo<Integer> foo2 = new GenericFoo<Integer>();
foo1.setFoo(new Boolean(false));
foo2.setFoo(new Integer(3));
Boolean b = foo1.getFoo();
Integer i = foo2.getFoo();
System.out.println(b);//false
System.out.println(i);//3
// foo1 = foo2;
GenericFoo a = new GenericFoo();
a.setFoo("hello");
String str = (String) a.getFoo();
System.out.println(str);//hello
}
}
public interface IBaseDao<T> {
public Serializable save(T o);
}
節本實現類
public class BaseDaoImpl<T> implements IBaseDao<T> {
@Override
public Serializable save(T o) {
return null;
}
}
業務實現接口
public interface IUserDao extends IBaseDao<User> {
}
業務實現接口public class UserDaoImpl extends BaseDaoImpl<User> implements IUserDao {
}
調用
public class Client {
public static void main(String[] args) {
IUserDao daoI=null;
User t=null;
daoI.save(t);
}
}