问题标签 [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.
java - 使用 Java 抽象方法避免代码重复
我有一个类(假设是 Vehicle),其中包含相当多的子类(Car、Bike、..)。每个子类都存储有关子类类型的特定信息(轮胎#,..)。
我想确保所有这些信息都已经被强制执行(在编译时)。所以我不想在子类的构造函数中指定这些数据(因为我可能会忘记设置其中的一些)。我可以将这些信息放在 Vehicle 的构造函数中,但这会使代码非常混乱,因为我有很多这些参数。
我最终得到了完全不可读的构造函数。它还将存储每个实例的此信息,即使它特定于子类。
另一种方法是引入抽象静态 getter/setter 并将信息存储在子类中。
这看起来更干净,并且还存储每个子类而不是每个实例的信息,但是子类中会有很多代码重复。目前,所有子类都包含约 20 个 setter/getter,但几乎没有真正的功能。有没有避免这种情况的干净方法?也许使用工厂方法或类似方法?
c# - 是否可以(部分)实现一个抽象方法并且仍然需要派生类来实现它?
这是我想做的一个原型,除了我意识到它不能像我写的那样工作:
现在我确实意识到,通过更改派生类中所需的抽象方法的名称,它确实可以工作:
只是我希望所有类中的方法名称都相同,GetKeyForItem。有什么办法可以使它工作吗?
c# - 类似于带有定义 c# 的抽象的东西
也许这首先是糟糕的设计,但我有一个抽象基类,它有一个方法validate
我知道每个派生类都有需要验证的属性,但我不想复制粘贴每个抽象方法的str1
验证str2
。
我想确保未来的开发人员(包括我自己)会记得包含并填写一个验证方法。从我所见,没有办法给抽象方法一个定义,或者强制一个虚拟方法被覆盖。
到目前为止,我听到的所有关于此的信息都是“你应该让开发人员选择他/她想要做的事情”。这对我来说还不够好,它违背了制衡,以帮助你不犯错误。我不介意他们是否主动选择没有任何实现代码,但如果他们忘记了,那么当派生字段未被验证时,这将导致头疼。
对这个问题有什么建议吗?
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$**”
java - Tomcat 7 版本不兼容,抛出 java.lang.abstractmethoderror
实际上我正在将我的应用程序Tomcat 5
从Tomcat 7.0.37
. java.lang.abstractmethoderror exception
当我启动服务器时,它给了我一个。我ANT
用来构建我的应用程序。我已经阅读了很多帖子并尝试了很多解决方案,但没有对我有用。堆栈跟踪是:
这是ant使用的build.xml文件
java - 创建新的抽象方法与接口方法
Q.如果你在一个没有链接到接口的抽象类中创建抽象方法,你是否仍然遵循程序到接口的原则?
我已经为我创建的所有 UI 类使用了一个接口;但是,考虑到接口的原因,我看不到与我要创建的抽象方法和已经存在的接口的直接关联。
通常,我会创建抽象方法并完成;但是,我想知道我是否违反了Program to an Interface的设计原则。
问:我应该为此创建另一个接口还是只使用抽象方法?
注意:这不是接口与抽象类的问题。
注意:我的基类更多是为了简化具体类中的代码。基类处理一些被覆盖的方法、辅助方法、初始化等……所以它不像一个接口,而是你的标准抽象类。
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:
java - 在抽象方法中作为返回类型的类型化列表返回对象列表 - 为什么?
我很困惑——需要帮助。我有一个带有抽象方法的抽象类:
当我声明一个 AbstractA 类型的方法参数并调用 getAll() 时,IDE 会显示正确的返回类型 ( List<String>
)。
但是当我想遍历该列表时,每个元素的类型都是 Object 而不是 String:
它变得更好:
我不知道这里发生了什么。我正在使用 Java 8(更新 25)。谁能向我解释为什么编译器不接受对我的列表进行迭代?
我真的很感谢你的帮助。
最好的问候,丹尼尔
c++ - 在链表中调用抽象类的方法失败
我写了一个名为 cube 的类,它包含一个双链表,它应该包含一个抽象类的对象,Animation
并有一个添加动画的方法。它看起来像他的:
界面:
在 arduino 项目的 ino 内部,我在全局和设置内部初始化 CubeLib 和动画,我将它们添加到列表中:
在一个名为 render 的方法中,我调用了当前的动画更新函数。
但在这种情况下,它确实什么也没发生。不会调用 Sinus 的更新。最后但并非最不重要的是我的双链表。(我测试了它,但也许它有一些问题?)
我很抱歉这里有很多代码。我希望它不是一个明显的失败者。
编辑:
窦被宣布喜欢他的:
java - 如何在抽象方法中使用泛型 EnumMap 作为参数
我尝试在抽象方法中使用通用 EnumMap 作为参数。我的问题是,当我使用 EnumMap 的现有枚举实现抽象方法时,编译器告诉我必须删除 Override Annotation 并实现超级方法。
这是我的抽象类:
和实现类:
也许我太傻了,但我做错了什么?
谁能帮我?