Java:通配符类型与普通类型

时间:2018-09-03 08:33:35

标签: java

方法eat()使用类型Food的参数,而Food是泛型类:

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而不是eat吗?方法eat不在意和使用与T相关的任何东西吗?

1 个答案:

答案 0 :(得分:0)

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