[英]incompatible types: inference variable T has incompatible bounds equality constraints: capture#1 of ? extends java.lang.Object
I am trying to connect to run a query to fetch all the records in MongoDB and then convert the records into a list ofthe reference object type I am taking as a generic to my calling class. 我正在尝试连接以运行查询以获取MongoDB中的所有记录,然后将记录转换为我作为我的调用类的通用参考对象类型的列表。 The code is running fine and achieving the desired result in Eclipse but gives a compilation error during a maven build , both maven and eclipse are referencing the same JDK(1.8).
代码运行正常并在Eclipse中实现了所需的结果,但在maven构建期间出现了编译错误,maven和eclipse都引用了相同的JDK(1.8)。 can someone please help me resolve this issue
请有人帮我解决这个问题
public class MongoPersistenceImpl<T> {
MongoDatabase database=(MongoDatabase)MongoConnectImpl.getInstance().getConnection();
public List<T> getAll(T modelObject){
MongoCollection<Document> collection=database.getCollection(MongoConnectImpl.MONGO_COLLECTION);
List<T> reportList=new ArrayList<>();
Gson gson=new Gson();
MongoCursor<Document> cursor = collection.find().iterator();
try {
while (cursor.hasNext()) {
T report=gson.fromJson(cursor.next().toJson(),modelObject.getClass());
reportList.add(report);
}
return reportList;
}catch(Exception e){
CatsLogger.printLogs(3, "30016", e, MongoPersistenceImpl.class,new Object[]{"get all"} );
return null;
} finally {
cursor.close();
}
}
}
Logs :- 日志: -
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] incompatible types: inference variable T has incompatible bounds
equality constraints: capture#1 of ? extends java.lang.Object
upper bounds: T,java.lang.Object
The complete message on reproducing the same being :- 关于复制同一个人的完整信息: -
UPDATE : explicitly type casting the an Object variable worked , but I still need to understand how? 更新 :明确键入一个Object变量的类型,但我仍然需要了解如何?
public List<T> getAll(T modelObject){
MongoCollection<Document> collection=database.getCollection(MongoConnectImpl.MONGO_COLLECTION);
List<T> reportList=new ArrayList<T>();
Gson gson=new Gson();
MongoCursor<Document> cursor = collection.find().iterator();
try {
while (cursor.hasNext()) {
Object rep=gson.fromJson(cursor.next().toJson(),modelObject.getClass());
T report=(T)rep;//explicit type cast
reportList.add(report);
}
return reportList;
}catch(Exception e){
CatsLogger.printLogs(3, "30016", e, MongoPersistenceImpl.class,new Object[]{"get all"} );
return null;
} finally {
cursor.close();
}
}
While you are trying to cast an object to a specific Type
of report
, try changing 在尝试将对象强制转换为特定
Type
的report
,请尝试更改
T report = gson.fromJson(cursor.next().toJson(), modelObject.getClass());
to 至
T report = gson.fromJson(cursor.next().toJson(), (java.lang.reflect.Type) modelObject.getClass());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.