我试图将一个小的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
}
这可能是完全不同的做法吗?
答案 0 :(得分:4)
如果我理解得很好,你正在寻找:
interface Ainterface<T extends AsuperPojo> {
void insertToDb(T foo);
}
然后使用:
class SubClass2 implements Ainterface<SpecialSubClass2Pojo>