1

我的情况:

我有 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);
}

问题:

我该如何执行

inObject.getId();

谁在我的 Workout、Exercise 和 User 类中定义

deleteObject(T inObject);

?

我希望我的问题是可以理解的,我对每个答案都很满意。也许(我很乐观)有人可以并且会帮助我:-)

此致

4

1 回答 1

0

您没有在 上设置任何上限T,因此编译器不知道它是一个具有getId()方法的对象。

您可以创建一个接口:

interface HasId {
    public int getId();
}

然后限制THasId

public abstract class GenericDatabaseManager<T extends HasId> {

而你的Workout等类可以实现HasId

然后编译器有足够的信息知道无论结果如何T,它都知道至少有一个getId()可以调用的方法。

于 2013-10-11T22:09:44.060 回答