这将是一个非常愚蠢的问题,但我无法理解为什么在使用下面的代码时出现编译错误。我有一个像
这样的方法public <T> List<T> mapGenericEntity(ResultSet resultSet, Class<T> type) throws SQLException, IllegalAccessException, InstantiationException, IntrospectionException, InvocationTargetException {
List<T> entities = new ArrayList<T>();
while(resultSet.next()) {
T instance = type.newInstance();
for(Field field: type.getDeclaredFields()) {
if(excludeFields.indexOf(field.getName()) != -1) {
continue;
}
Object value = resultSet.getObject(field.getName());
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(field.getName(), type);
Method method = propertyDescriptor.getWriteMethod();
method.invoke(instance, value);
}
entities.add(instance);
}
return entities;
}
我正在调用此方法,如下所示
mapGenericEntity(resultSet, Product.class);
但我收到编译错误如下
incompatible types: no instance(s) of type variable(s) T exist so that java.util.List<T> conforms to com.company.Product
我在这里缺少什么?
编辑:
解决方案
好的,所以我是傻瓜。 mapGenericEntity方法返回Product对象列表,我将它分配给单个实例。我正在做类似
的事情 Product product = mapGenericEntity(resultSet, Product.class);
但在Intellij中,下面有一个红色下划线
mapGenericEntity(resultSet, Product.class);
而不是
Product product
此外,错误消息应该更容易理解。