gpt4 book ai didi

java - 抽象函数,参数类型扩展类

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

我正在用 Java 构建一个图书馆管理应用程序。

我有一个名为Material的抽象类。它有一个名为 equals 的抽象方法。

有一个名为 Newspaper 的子类,它当然实现了 equals,其签名与 equalsMaterial 中的签名完全相同:

public <T extends Material> boolean equals(Class<T> elementoAComparar) {
if (this.getTitulo().equals(elementoAComparar.getTitulo()) && this.getFechaPublicacion().equals(elementoAComparar.getFechaPublicacion())) {
return true;
} else {
return false;
}
}

Java 无法解析 elementoAComparar 的任何方法。它们都存在于 Newspaper 中,它扩展了 Material

我得到了一些帮助 on this thread of SO但我无法让它真正发挥作用。

我想我真正不明白的是如何使用作为通用参数的类的方法。

我确信这确实没那么难,但我对 Java 的经验很少,请不要对我太难:)

谢谢!

最佳答案

正如 @Ajit George 提到的,如果您尝试实现相等方法,那么有更简洁的方法可以实现。但是,如果您只想编译并运行代码,则需要更改方法的签名。 Java 无法解析 elementoAComparar 的方法,因为 Class 没有这些方法,而 Material 有。

您需要更改 equals 方法签名

public <T extends Material> boolean equals(Class<T> elementoAComparar)

public <T extends Material> boolean equals(T elementoAComparar)

第一个签名告诉 Java 您将传递 Class 对象的实例。第二个告诉 Java 您将传递一个 Material 对象的实例。

关于java - 抽象函数,参数类型扩展类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37840405/

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