我无法理解为什么行mex.h
出现编译错误“不兼容的类型:需要的对象,找到的是整数
getList的返回值是具体的,而不取决于T
如果我将for (Integer integer : genericClass.getList()) {
更改为for (GenericClass genericClass : list) {
,错误就消失了
为什么?
for (GenericClass<String> genericClass : list) {
答案 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
。您必须提供类型。