当前位置: 首页 > 知识库问答 >
问题:

实现/扩展类而不实现所有方法

盛柏
2023-03-14

我希望有一个方法返回一个类 Job,该类根据作业类型具有不同的方法。
例如,作业类型可以是 BackupJobRunCommandJob。它们不共享方法,但需要从单个方法getJob()中获取它们。

现在我有一个普通的类< code>job,它的方法返回< code>null,没有构造函数,因为我在< code>getJob()方法中构造了其他类(例如BackupJob或RunCommandJob)。

在返回单个类的同时获得不同工作类的最佳方法是什么?
示例代码如下。
职位等级:

public ArrayList<String> getCommands() { return null; }

public String getBackupGUID() { return null; }

public void setCommands(String... commands) { return; }

public void setBackupGUID(String backupGUID) { return; }
//Etc...

getJob方法

public Job getJob() { 
if (JobType == RunCommandsJob) return new RunCommandsJob(...);
else if (JobType == BackupJob) return new BackupJob(...);
//and so on for all the other types

RunCommandsJob类的示例,但它与所有不同类型的概念相同,但具有唯一的方法名。

public ArrayList<String> getCommands() { /* method */ }
public void setCommands(String... commands) {/* method */ }

编辑:多一点背景。
我有一个调度程序类,可以包含多个任务。每个任务都有自己的作业,这可能是不同的东西(例如,RunCommandsJob)。不使用作业本身,但在其他类中,我扩展了作业,以便我可以返回一个“作业”,该作业实际上是“RunCommandsJob”,它具有在数据库/API 中编辑它的逻辑。
这很复杂,但这就是我必须处理的事情。

共有1个答案

龙晟睿
2023-03-14

您可以将作业定义为接口或抽象类。因此,您不必编写默认实现,具体类必须实现这些方法。

 类似资料:
  • 问题内容: 我有以下类和接口: 我想创建一个方法,其中参数需要为BasicObject类型并实现CodeObject。我尝试了以下代码,但不能保证clazz是实现CodeObject的类。 我想做这样的事情,但不能编译: 问题答案: 您的模式类必须扩展和扩展/实现(实际上是一个接口)。您可以使用方法签名的通配符定义中声明的多个类来执行此操作,如下所示: 请注意,如果您通过以下任何一种方式进行操作,

  • 我有以下类和接口: 我想创建一个方法,其中参数需要是BasicObject类型,并实现CodeObject。我尝试了以下代码,但它不能保证clazz是一个实现CodeObject的类。 我想做这样的事情,但它无法编译:

  • 但是现在,我希望这些接口实现也可用于扩展,例如。 我如何设置我的课程来实现这一点?(或者,反对这样做的固有缺陷或代码气味是什么?)

  • SPI 扩展接口仅用于系统集成,或 Contributor 扩展功能插件。

  • 本文向大家介绍Android实现扩展Menu的方法,包括了Android实现扩展Menu的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android实现扩展Menu的方法。分享给大家供大家参考。具体如下: 1. java代码: 2. java代码: 3. 运行结果: 希望本文所述对大家的Android程序设计有所帮助。

  • 问题内容: 我试图找出扩展Thread类的可能的优点是什么? 这是我描述的另一个问题的一部分:在Java中有两种创建线程的方法 从Thread类扩展 实现可运行的接口 如此处所述,使用可运行接口有许多好处。我的问题是从Thread类扩展的优点是什么?我想到的唯一好处是可以从Thread类扩展,并且可以称其为ThreadExtended类。然后,他/她可以在ThreadExtended中添加更多功能