[英]How can a java method take an argument that extends a generic type
我正在尝试将一个小型MongoDB应用程序实现为jar文件,该文件可以从一系列其他应用程序中使用。 (运行Java 6)
目的是拥有一个处理并包含DBCollection
, MongoDatabase
和MongoClient
。 这些超类可以被这些其他应用程序以及这些中使用的MongoDB扩展。 我还希望其他应用程序实现一个包含1 insertIntoDB()
方法的接口。 此insertIntoDB()
方法应采用1个参数,该参数将是另一个子类,这是我的问题。 接口如何指定泛型类型的扩展,以便每个实现都返回扩展类型?
以下是进一步的解释:
class AsuperClass implements Ainterface {
MongoClient aMongoClient
MongoDatabase aMongoDatabase
initMongoDb() {
//doStuff
}
}
class AsuperPojo {
int propA
String propB
}
interface Ainterface {
void insertToDb(AsuperPojo);
}
class SubClass1 implements Ainterface extends AsuperClass{
@Override
public void insertToDb(SpecialSubClass1Pojo aSpecialSubClass1Pojo) {
//doStuff
}
}
class SpecialSubClass1Pojo() {
int propA
String propB
}
class SubClass2 implements Ainterface extends AsuperClass{
@Override
public void insertToDb(SpecialSubClass2Pojo aSpecialSubClass2Pojo) {
//doStuff
}
}
class SpecialSubClass2Pojo() {
int propA
String propB
}
也许有完全不同的方式来做到这一点?
如果我理解得很好,那么您正在寻找:
interface Ainterface<T extends AsuperPojo> {
void insertToDb(T foo);
}
然后使用:
class SubClass2 implements Ainterface<SpecialSubClass2Pojo>
一些阅读: https : //docs.oracle.com/javase/tutorial/java/generics/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.