T和?的区别
@Test
public void
testOne(){
// ?做对象的泛型来用
List<?> list = findAllList(
1
);
list.forEach(temp ->{
System.
out
.print(temp);
});
System.
out
.println();
List<?> lists = findAllList(
2
);
lists.forEach(temp ->{
System.
out
.print(temp);
});
//T做类的泛型,当输入的类型是One的时候,只能用One接
One one =
new
Class<One>().newInstance();
//而不能用Two接
One one =
new
Class<Two>().newInstance();
}
class
Two{
private
Two(){
System.
out
.println(
"Two"
);
}
}
static class
Class<
T
>{
T
newInstance() {
return
(
T
)
new
One();
}
}
private static class
One{
private
One(){
System.
out
.println(
"One"
);
}
}
private
List<?> findAllList(Integer type){
if
(type ==
1
){
List<Integer> list =
new
ArrayList<>();
list.add(
1
);
list.add(
2
);
return
list;
}
else
{
List<String> list =
new
ArrayList<>();
list.add(
"AA"
);
list.add(
"BB"
);
return
list;
}
}