在部分抽象类(Java)中执行一个可接受泛型类型的方法 我的情况:

在部分抽象类(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

我有3个类(用于我的Android应用程序),它们扩展了一个部分抽象的类,我在其中定义并实现了函数:deleteObject();此函数接受泛型类型T

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> {