写一个支持泛型的类,真的很简单,呵呵,看代码
[quote]
public class Generic<E> {
[color=red] //private static List<E> staticList = new ArrayList<E>(); 不能这样写,编译出错,因为静态变量的实例共享的。[/color]
protected List<E> list;
public Generic(){
list = new ArrayList<E>();
}
}
[/quote]
这样就OK了,"E" 代表一个参数类型,可以用任何字母、单词来代替,不过一般用一个大写字母。
限制参数类型,也很简单,只要让你的类型变量继承特定的类,如:
[quote]
public class Generic<E extends Number> {
protected List<E> list;
public Generic(){
list = new ArrayList<E>();
}
}
[/quote]
如果这样调用
[quote]
Generic<String> generic = new Generic<String>();
[/quote]
编译器会提示错误...强制使用制定的参数化类型。
方法也一样,看下列代码:
[quote]
public List<? extends Number> setList(List <? extends Number> inList ) {
return inList;
}
[/quote]
也可以这样写
[quote]
public <A extends Number>List setList(List<A> inList ) {
return inList;
}
[/quote]
有点诡异...
[quote]
public class Generic<E> {
[color=red] //private static List<E> staticList = new ArrayList<E>(); 不能这样写,编译出错,因为静态变量的实例共享的。[/color]
protected List<E> list;
public Generic(){
list = new ArrayList<E>();
}
}
[/quote]
这样就OK了,"E" 代表一个参数类型,可以用任何字母、单词来代替,不过一般用一个大写字母。
限制参数类型,也很简单,只要让你的类型变量继承特定的类,如:
[quote]
public class Generic<E extends Number> {
protected List<E> list;
public Generic(){
list = new ArrayList<E>();
}
}
[/quote]
如果这样调用
[quote]
Generic<String> generic = new Generic<String>();
[/quote]
编译器会提示错误...强制使用制定的参数化类型。
方法也一样,看下列代码:
[quote]
public List<? extends Number> setList(List <? extends Number> inList ) {
return inList;
}
[/quote]
也可以这样写
[quote]
public <A extends Number>List setList(List<A> inList ) {
return inList;
}
[/quote]
有点诡异...