类和方法的通用泛型存在问题

时间:2019-03-29 06:54:46

标签: java generics

我无法理解为什么行mex.h出现编译错误“不兼容的类型:需要的对象,找到的是整数 getList的返回值是具体的,而不取决于T

如果我将for (Integer integer : genericClass.getList()) {更改为for (GenericClass genericClass : list) {,错误就消失了

为什么?

for (GenericClass<String> genericClass : list) {

4 个答案:

答案 0 :(得分:1)

之所以起作用,是因为更早的GenericClass genericClass等效于GenericClass<Object>,并且Object不会扩展 String ,即 final

答案 1 :(得分:0)

您的

    private List<Integer> getList() {
        return list;
    }

是私有的,但是无论如何您都试图调用它,是否覆盖默认值。否则将其设置为受保护或公开。

答案 2 :(得分:0)

在您的第一个for循环中,您没有提到类型。试试这个

var query2 = from t in db.Tour
    join tc in db.TourCategory on t.ID equals tc.TourID
    join td in db.TourDates on t.ID equals td.TourID
    join d in db.Dates on td.DatesID equals d.ID
    where tc.CategoryID == 3
    select new IndexTour
    {
        ID = t.ID,
        TourName = t.TourName,
        //DepartureDateRange = 
        //ReturnDateRange = 
        Description = t.SmallDesc,
        Price = t.Price,
        CoverPhotoUrl = t.CoverPhotoUrl,
        TourProgram = t.TourDesc
    };

答案 3 :(得分:0)

此行for (GenericClass genericClass : list) {给出错误,因为您已将GenericClass声明为private class GenericClass<T extends String>

因此,每当要创建此类的对象时,都必须将其声明为;
GenericClass<String> genericClass。您必须提供类型。