【发布时间】:2018-01-17 09:06:04
【问题描述】:
假设我有一个在它的构造函数中有 3 个参数的超类,并且我正在继承这个也有一个具有 3 个参数的构造函数的类,我想调用超类构造函数,但在我想做一些逻辑之前首先子类,我可以调用一个静态方法来接收这3个参数,但我必须只返回一个,所以这就是我想出的解决方案
public class someClass extends SuperClass {
public someClass(int a,int b,int c) {
super(func(a,b,c),b,c);
}
public static int func(int a,int b,int c){
//usage a b c
return a;
}
}
看起来有点难看,我想知道是否有更好的解决方案来自己使用参数,然后定期调用 super。请注意,我无法更改超类或子类的用法,因此无法更改工厂设计模式
【问题讨论】:
-
...您知道构造函数不应该真正包含“逻辑”,对吧?所以,如果我理解正确的话:你想在一个甚至没有完全实例化的对象上运行业务逻辑?
-
你的
func方法总是返回a吗(这意味着超级调用总是super(a,b,c)?如果是这样的话,我认为没有理由在super(a,b,c)之前调用func. -
我想调用外部逻辑,比如打开一个文件,这与我实例化的对象本身并不完全相关
-
我不完全确定我是否正确理解了你想要做什么,但是 Builder 模式呢?您可以在以这种方式调用构造函数之前执行您的逻辑。
-
@Turing85 绝对不是!请查看他们的help center。这是示例代码,在 Code Review 中是非常非法的。
标签: java constructor super