在部分抽象类(Java)中执行一个可接受泛型类型的方法 我的情况:
我有3个类(用于我的Android应用程序),它们扩展了一个部分抽象的类,我在其中定义并实现了函数:deleteObject();此函数接受泛型类型T在部分抽象类(Java)中执行一个可接受泛型类型的方法 我的情况:,java,android,generics,generic-programming,Java,Android,Generics,Generic Programming,我有3个类(用于我的Android应用程序),它们扩展了一个部分抽象的类,我在其中定义并实现了函数:deleteObject();此函数接受泛型类型T public abstract class GenericDatabaseManager<T> { public void deleteObject (T inObject) { // want to execute the function inObject.getId(); // who
public abstract class GenericDatabaseManager<T> {
public void deleteObject (T inObject) {
// want to execute the function inObject.getId();
// who is defined in the Workout, Exercise and the User
// class
}
...
}
public class WorkoutManager extends GenericDatabaseManager<Workout> {
deleteObject(Workout);
}
public class ExerciseManager extends GenericDatabaseManager<Exercise> {
deleteObject(Exercise);
}
public class UserManager extends GenericDatabaseManager<User> {
deleteObject(User);
}
在我的“训练”、“锻炼”和“用户”类中定义了谁
deleteObject(T inObject);
?
我希望我的问题是可以理解的,我对每个答案都感到高兴。
也许(我很乐观)有人能而且会帮助我:-)
致以最诚挚的问候您没有对
t
设置任何上限,因此编译器不知道它是一个具有getId()
方法的对象
您可以创建一个接口:
interface HasId {
public int getId();
}
然后将T
限制为HasId
:
public abstract class GenericDatabaseManager<T extends HasId> {
公共抽象类GenericDatabaseManager{
你的训练
等。类可以实现HasId
然后编译器有足够的信息知道无论
T
最终是什么,它都知道至少有一个getId()
方法可以调用。您需要强制转换它。可能需要定义一个接口并对泛型类型参数进行绑定。
public abstract class GenericDatabaseManager<T extends HasId> {