集合之泛型
作者:互联网
1.概念
当我们写一些与集合相关的代码时,总会出现黄色警告,我们总是用注释将其去掉,现在我们可以用泛型来进行解决问题,因为Object类下面很多的包装类和引用类,进行集合相关数据的处理的时候,我们需要实例化对象,用泛型可以帮我们省掉很多的类型转换
2.示例
public static void main(String[] args) {
List <TestTwo>lt= new ArrayList<>();//菱形泛型(jdk7之后)
lt.add(new TestTwo("Spring",12));
lt.add(new TestTwo("Summer",12));
Iterator <TestTwo>te=lt.iterator();
while(te.hasNext()) {
TestTwo dt=(TestTwo)te.next();
System.out.print(dt);
}
}
3.泛型通配符
在实际工作当中,有可能通过调用某个方法来接受一个返回值List的数据,这样就不太好确定返回值中的数据类型,这样可以使用泛型通配符<?>
List<?> list = new ArrayList<Integer>();//=号右边可能是通过调用某个方法返回的List
使用通配符限定子类和父类
- ? extends E
向下限定,E及其子类,可以存储当前类型的子类 - ? super E
向上限定,E及其父类,可以存储当前类型的父类
public class TestThree extends TestTwo{
public TestThree() {
super();
}
public TestThree(String name, int age) {
super(name, age);
}
}
public class TestTwo {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public TestTwo() {
}
public TestTwo(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "TestTwo [name=" + name + ", age=" + age + "]";
}
}
public class Testone {
public static void main(String[] args) {
List<TestTwo>lt= new ArrayList<>();//菱形泛型(jdk7之后)
lt.add(new TestTwo("Spring",12));
lt.add(new TestTwo("Summer",12));
List<TestThree>lt2=new ArrayList<>();
lt2.add(new TestThree("Autumn",12));
lt2.add(new TestThree("Winter",12));
//因为TestThree是TestTwo的子类,且addAll方法是向下限定的,故两者可以结合
lt.addAll(lt2);
}
}
标签:name,age,TestTwo,集合,之泛,new,public,String 来源: https://blog.csdn.net/a1k2l45k/article/details/88934980