开发者学堂课程【Java 面试疑难点串讲 1 :面试技巧及语言基础:泛型中 ”T” 与 ”?” 的区别 ?】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/24/detail/508
泛型中 ”T” 与 ”?” 的区别 ?
内容介绍:
1. “T” 的操作特点
2. “?” 的操作特点
3. 范例:<T> 只能用于泛型类的声明
4. 范例:<T> 用于方法上
“T”的操作特点
“T”用于泛型类型的声明
“?”的操作特点
“?”用于方法的接受参数或者是返回类型
范例:<T> 只能用于泛型类的声明
class Message<T> { //现在这个 T 表示需要设置一个泛型来定义 msg 属性类型
private T msg;
public void setMsg(T msg) {
this.msg = msg;
}
public T getMsg(){
return msg;
}
}
范例:<T> 用于方法上
实际上可以发现 “<T>” 也可以用于方法上,这时表示 T 是一个具体的类型(类、接口),如果该类型不存在则无法使用
public class TestDemo{
public static void main (String []args) {
Message<String>msg = new Message<String>();
msg.setMsg("Hello");
fun(msg);//可以接收所有的 Message 定义的泛型类型 public static void fun(Message<?> temp){
{temp.setMsg("AASAA");//无法设置
System.out.println(temp.getMsg());
}
}
使用“类 <?>” 表示只能取得内容,但不允许设置内容