我正在用Java构建一个库管理应用程序。
我有一个名为 Material
的抽象类。它有一个称为 equals
的抽象方法。
有一个名为< code>Newspaper的子类,它当然实现了< code>equals,其签名与< code>equals在< code>Material中的签名完全相同:
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无法解析< code > elementoacomparer 的任何方法。它们都存在于< code >报纸中,该报纸确实扩展了< code >材料。
我在SO的这个线程上得到了一些帮助,但是我不能让它真正工作。
我想我真正没有得到的是如何使用作为通用参数工作的类的方法。
我相信这真的没那么难,但我对Java的经验很少,请不要对我太苛刻:)
谢谢!
两点:
类
,equals
通常用于比较实例。您的 equals
声明意味着您希望将此对象与类对象进行比较。equals
在 java.lang.Object
上定义,所有对象都继承它。为了使比较实现能够使用 Java 库代码,您需要覆盖 Object.equals
。equals
早于 Java 中的泛型,因此 Object.equals
不使用它们。您的实现需要检查正在比较的实例并将其强制转换为您的对象类型,以便获取另一个对象的字段。在Java中重写equals和hashCode时应该考虑哪些问题?提供了很好的总结和演示。
正如@Ajit George提到的,如果你想实现一个平等的方法,那么有更干净的方法。然而,如果你只是想编译和运行你的代码,那么你需要改变你的方法的签名。Java无法解析< code > elementoacomparer 的方法,因为< code>Class没有这些方法,而< code>Material有。
您需要将等式
方法签名从
public <T extends Material> boolean equals(Class<T> elementoAComparar)
到
public <T extends Material> boolean equals(T elementoAComparar)
第一个签名告诉Java您将传递Class
对象的实例。第二个告诉Java,您将传递一个对象的实例,该对象是Material
。
我试图使用Javascript函数扩展Java中的抽象类。例如,test/A.java: 和<代码>测试。js: 计算上述行会导致错误
我不熟悉泛型。我有一个抽象类(1)和一个抽象方法。我有另一个抽象类(2)和一些抽象方法,我希望在一些DTO(3,4)中共享这些抽象方法。我想要一个(1)的具体扩展来处理任何扩展(2)的东西。 1. 扩展StagingError的两个类:3.
问题内容: 我收到一个错误,程序中有这个结构 错误指向Circle扩展Shapes < T >类,其中指出“ T无法解析为类型”。如果将T设置为字符串,错误将消失,但这也意味着我只能使用一种数据类型。我应该在<>中放入什么,以便可以使用任何数据类型(字符串,整数,双精度型等),或者这样做是错误的? 问题答案: 有两个不同的概念。当你写 这意味着您正在创建一个类,该类在实例化时将被某个类参数化。您不
本文向大家介绍C#扩展抽象基类,包括了C#扩展抽象基类的使用技巧和注意事项,需要的朋友参考一下 示例 与接口(可以描述为实现合同)不同,抽象类充当扩展的合同。 抽象类无法实例化,必须对其进行扩展,然后可以实例化生成的类(或派生类)。 抽象类用于提供通用实现 上面的示例显示了实现Car的任何扩展类如何自动接收HonkHorn方法。这意味着任何开发新汽车的开发人员都无需担心它将如何鸣笛。
问题内容: 我之前了解到抽象类可以扩展具体类。尽管我没从JAVA设计师那里看到原因,但是没关系。我还了解到,扩展具体类的抽象类可以使重写的方法抽象。为什么?您可以提供有用的用例吗?我正在尝试学习设计模式,我不想错过任何东西。 这是示例: 问题答案: 如果我有一组想要默认实现的类(以便它们可以从扩展),并且想要强制提供自己的实现(在这种情况下使其抽象为子类会强制执行此操作。) 当然,此示例中的另一种
根据类型将函数添加到类中的惯用方法是什么。下面的示例使用 List 作为类,并使用 Type 参数