【发布时间】:2022-12-01 00:33:27
【问题描述】:
我是 Java 的新手。
我正在处理的项目中的多个文件中存在重复代码。 对象类型可以是 Thing1、Thing2、Thing3 等。 所以代码看起来像:
if (Thing1.getStuff() instanceof String) {
myObj.setString("Hello");
} else {
myObj.setString("World");
}
我想用一个类和方法来扩展 myObj 来处理这个问题,如下所示:
public class myObj extends doStuff {...}
--
class doStuff {
public String DoThis(*WHAT_TYPE_TO_USE* input) {
var String = input.myMethod(); // I need to call method.
return "String after some logic";
}
}
哪个应该允许我运行:
myObj.DoThis("Something");
但是,我不能在方法中将输入指定为特定类型,因为它可能是 Thing1、Thing2 等。此外,Thing1 和 Thing2 不能动态导入,不是吗?如何运行 myMethod(存在于 Thing1 和 Thing2 中)?
任何建议表示赞赏。
【问题讨论】:
-
getStuff的签名是什么?实际上,Thing1 和 Thing2 应该有自己的myMethod实现,并且根本没有问题。 -
我对您的潜在需求感到困惑。但我感觉到接口(或抽象机制)是你所需要的。
-
无关:请坚持 Java 命名约定
-
@kleopatra 我不认为这是不相关的。
Thing1.getStuff()看起来像一个静态方法,他们说Thing1和Thing2是类型。所以他们缺乏细节,命名约定可以帮助澄清 -
@matt 是的,虽然我们不能真正知道 getStuff 是静态的还是草率的 sn-ps,但我们知道
class doStuff和void DoThis确实是命名违规:)
标签: java inheritance