java - Java:通配符类型与普通类型
问题描述
方法eat()
使用 type 的参数Food
,whileFood
是泛型类:
class Food<T> {
T type;
...
}
class Human {
public void eat Food(Food food) {
// eat, eat, and eat, however it has nothing to do with T
}
}
问题是,我应该声明Food<?>
而不是Food
ineat
的参数吗?当该方法eat
不关心和使用与 相关的任何东西时,有什么区别T
吗?
解决方案
如果您使用 just Food
,那么您使用的是原始类型。编译器将发出警告,因为它会丢失任何信息,并且无法对该类型的后续使用进行任何类型检查。因此,如果您不关心T
方法内部,请使用Food<?>
并让编译器知道这一事实。
推荐阅读
- python-3.x - How to check if tree is symmetric python
- php - How to get the last inserted ID from MSSQL server?
- angular - 将下拉列表的选定 ID 绑定到输入并将其视为默认值
- solr - Does solr replication not work while data import is in progress on master?
- r - 为 ML 相关的网页抓取加载数千个 URL - 代码非常慢,需要效率提示
- java - 字符串 .replace() 不适用
- google-cloud-firestore - How to write Firestore Rule to allow admin access
- git - 我从本地删除文件而不是丢弃本地更改
- azure - azure devops 中的 fontawesome pro
- angular - How to Fix "has no exported member 'FirebaseListObservable' "