首页 > 解决方案 > 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<?>而不是Foodineat的参数吗?当该方法eat不关心和使用与 相关的任何东西时,有什么区别T吗?

标签: java

解决方案


如果您使用 just Food,那么您使用的是原始类型。编译器将发出警告,因为它会丢失任何信息,并且无法对该类型的后续使用进行任何类型检查。因此,如果您不关心T方法内部,请使用Food<?>并让编译器知道这一事实。


推荐阅读