问题标签 [abstract-methods]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
683 浏览

java - 使用 Java 抽象方法避免代码重复

我有一个类(假设是 Vehicle),其中包含相当多的子类(Car、Bike、..)。每个子类都存储有关子类类型的特定信息(轮胎#,..)。

我想确保所有这些信息都已经被强制执行(在编译时)。所以我不想在子类的构造函数中指定这些数据(因为我可能会忘记设置其中的一些)。我可以将这些信息放在 Vehicle 的构造函数中,但这会使代码非常混乱,因为我有很多这些参数。

我最终得到了完全不可读的构造函数。它还将存储每个实例的此信息,即使它特定于子类。

另一种方法是引入抽象静态 getter/setter 并将信息存储在子类中。

这看起来更干净,并且还存储每个子类而不是每个实例的信息,但是子类中会有很多代码重复。目前,所有子类都包含约 20 个 setter/getter,但几乎没有真正的功能。有没有避免这种情况的干净方法?也许使用工厂方法或类似方法?

0 投票
1 回答
916 浏览

c# - 是否可以(部分)实现一个抽象方法并且仍然需要派生类来实现它?

这是我想做的一个原型,除了我意识到它不能像我写的那样工作:

现在我确实意识到,通过更改派生类中所需的抽象方法的名称,它确实可以工作:

只是我希望所有类中的方法名称都相同,GetKeyForItem。有什么办法可以使它工作吗?

0 投票
3 回答
493 浏览

c# - 类似于带有定义 c# 的抽象的东西

也许这首先是糟糕的设计,但我有一个抽象基类,它有一个方法validate

我知道每个派生类都有需要验证的属性,但我不想复制粘贴每个抽象方法的str1验证str2

我想确保未来的开发人员(包括我自己)会记得包含并填写一个验证方法。从我所见,没有办法给抽象方法一个定义,或者强制一个虚拟方法被覆盖。

到目前为止,我听到的所有关于此的信息都是“你应该让开发人员选择他/她想要做的事情”。这对我来说还不够好,它违背了制衡,以帮助你不犯错误。我不介意他们是否主动选择没有任何实现代码,但如果他们忘记了,那么当派生字段未被验证时,这将导致头疼。

对这个问题有什么建议吗?

0 投票
2 回答
481 浏览

java - Proguard 使我的 RemoteController 兼容实现在 API<19 设备上崩溃

我正在尝试让 API 19 引入的 RemoteController API 与 API 14+ 一起使用,因为 api 已经在那里可用但被隐藏了。到目前为止,我一切正常,剩下的唯一问题是,proguard 似乎破坏了我在 API<19 设备上的构建,每当我在 MicroService.java 中初始化 RemoteMetadataProvider 时,都会导致 AbstractMethodError:

MicroService.java:https://github.com/tomahawk-player/tomahawk-android/blob/master/src/org/tomahawk/tomahawk_android/services/MicroService.java _

我的实现基于 DrBreen 的本指南/库:http: //forum.xda-developers.com/showthread.php? t=2432267

我正在使用的 WisdomWolf 统一库:https ://github.com/WisdomWolf/UnifiedRemoteMedadataProvider

我的 proguard 配置文件:https ://github.com/tomahawk-player/tomahawk-android/blob/master/proguard-android.txt

当我完全禁用 proguard 时,一切正常而不会崩溃,所以我猜测 proguard 以某种方式剥离了所需的类/接口。关于如何正确配置 proguard 的任何想法?

到目前为止我的尝试:

  • 将“-keep class org.electricwisdom.**”和“-keep class com.woodblockwithoutco.* *”添加到我的 proguard 文件中,因为这两个是 RemoteMetadataProvider 库的包名,它实现了 API 14-18 的 RemoteController API
  • 在我的 proguard 文件中添加“-keep * implements android.media.IRemoteControlDisplay”和/或“-keep * extends android.media.IRemoteControlDisplay$Stub”
  • 添加“-keep class android.media.IRemoteControlDisplay$**”
0 投票
1 回答
9981 浏览

java - Tomcat 7 版本不兼容,抛出 java.lang.abstractmethoderror

实际上我正在将我的应用程序Tomcat 5Tomcat 7.0.37. java.lang.abstractmethoderror exception当我启动服务器时,它给了我一个。我ANT用来构建我的应用程序。我已经阅读了很多帖子并尝试了很多解决方案,但没有对我有用。堆栈跟踪是:

这是ant使用的build.xml文件

0 投票
4 回答
651 浏览

java - 创建新的抽象方法与接口方法

Q.如果你在一个没有链接到接口的抽象类中创建抽象方法,你是否仍然遵循程序到接口的原则?

我已经为我创建的所有 UI 类使用了一个接口;但是,考虑到接口的原因,我看不到与我要创建的抽象方法和已经存在的接口的直接关联。

通常,我会创建抽象方法并完成;但是,我想知道我是否违反了Program to an Interface的设计原则。

问:我应该为此创建另一个接口还是只使用抽象方法?

注意:这不是接口与抽象类的问题。

注意:我的基类更多是为了简化具体类中的代码。基类处理一些被覆盖的方法、辅助方法、初始化等……所以它不像一个接口,而是你的标准抽象类。

0 投票
1 回答
88 浏览

java - Is it considered better form for an abstract class to include abstract methods from an interface?

I realize the declaration of abstract methods left over from an interface is optional, but I'm wondering whether or not it's considered better form semantically to include them.

Interface:

Abstract class:

0 投票
0 回答
30 浏览

java - 在抽象方法中作为返回类型的类型化列表返回对象列表 - 为什么?

我很困惑——需要帮助。我有一个带有抽象方法的抽象类:

当我声明一个 AbstractA 类型的方法参数并调用 getAll() 时,IDE 会显示正确的返回类型 ( List<String>)。

但是当我想遍历该列表时,每个元素的类型都是 Object 而不是 String:

它变得更好:

我不知道这里发生了什么。我正在使用 Java 8(更新 25)。谁能向我解释为什么编译器不接受对我的列表进行迭代?

我真的很感谢你的帮助。

最好的问候,丹尼尔

0 投票
1 回答
145 浏览

c++ - 在链表中调用抽象类的方法失败

我写了一个名为 cube 的类,它包含一个双链表,它应该包含一个抽象类的对象,Animation并有一个添加动画的方法。它看起来像他的:

界面:

在 arduino 项目的 ino 内部,我在全局和设置内部初始化 CubeLib 和动画,我将它们添加到列表中:

在一个名为 render 的方法中,我调用了当前的动画更新函数。

但在这种情况下,它确实什么也没发生。不会调用 Sinus 的更新。最后但并非最不重要的是我的双链表。(我测试了它,但也许它有一些问题?)

我很抱歉这里有很多代码。我希望它不是一个明显的失败者。


编辑:

窦被宣布喜欢他的:

0 投票
1 回答
1169 浏览

java - 如何在抽象方法中使用泛型 EnumMap 作为参数

我尝试在抽象方法中使用通用 EnumMap 作为参数。我的问题是,当我使用 EnumMap 的现有枚举实现抽象方法时,编译器告诉我必须删除 Override Annotation 并实现超级方法。

这是我的抽象类:

和实现类:

也许我太傻了,但我做错了什么?

谁能帮我?