import java.util.ArrayList;
//加入泛型的最大作用是避免了类转换异常(ClassCastException)的发生,这样将使程序的操作更加安全。
class A<T> {
public T[] p(T... args) {
// T[] t = new T[3];//不能定义数组因为需要开辟的数组类型空间大小不知道但可以返回
int[] i = new int[3];
return args;
}
public static <T> void pp(T t) {// 静态方法的泛型必须是自声名不能引用类中的泛型
}
public T ppp(T t) {
return t;
}
}
class B {
public <T> T p(T t) {// 泛型方法
return t;
}
public <T> void pp(ArrayList<? super String> t, T at) {//设置下限只能接受String和Object类型
System.out.println(t.size() + "--->" + at);
}
}
class c<T extends String> {
}
class d /* <T super String> */{// 下限只能在方法中使用,不能在类中使用;
}
interface E<T> {
}
// 实现方式一
class f<T> implements E<T> {
}
// 实现方式二
class g implements E<String> {
}
public class TClass {
public static void main(String[] args) {
ArrayList<Integer> arrayList = new ArrayList<>();
ArrayList<Object> arrayList2 = new ArrayList<>();
// arrayList2=arrayList;//不能进行上转型,即将泛型子类对象的引用赋给泛型父类对象
A<?> a = new A<String>();// 可以使用?通配符接受但不能操作
// a.ppp("abc");//会报错
ArrayList<String> aList[] = new ArrayList[2];
for (int i = 0; i < aList.length; i++) {
aList[i] = new ArrayList<>();
aList[i].add("abc");
aList[i].add("cde");
}
B b=new B();b.pp(alist[1],3);
// System.out.println(aList[0].size());
ArrayList<Integer> aList2[] = new ArrayList[3];
for (int i = 0; i < aList2.length; i++) {
aList2[i] = new ArrayList<>();
// System.out.println("aaa");
aList2[i].add(1);
aList2[i].add(2);
}
for (int i = 0; i < aList.length; i++) {
for (int j = 0; j < aList[i].size(); j++) {
System.out.println(aList[i].get(j) + aList2[i].get(j));
}
}
}
}
java中的泛型
最新推荐文章于 2024-07-25 15:01:20 发布