gpt4 book ai didi

java - 在部分抽象类中执行接受的泛型类型的方法 - Java

转载 作者:行者123 更新时间:2023-12-01 04:17:12 25 4
gpt4 key购买 nike

我的情况:

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

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

致以诚挚的问候

最佳答案

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

您可以创建一个界面:

interface HasId {
public int getId();
}

然后将 T 限制为 HasId:

public abstract class GenericDatabaseManager<T extends HasId> {

并且您的Workout等类可以实现HasId

然后编译器就有足够的信息知道无论 T 最终是什么,它都知道至少有一个可以调用的 getId() 方法。

关于java - 在部分抽象类中执行接受的泛型类型的方法 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19328011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com