所以我正在构建一个我将主要用于个人用途的测试库,但是我有一个问题.
使用Java,如果你的班级中有2个或更多的构造函数,如果你想从另一个构建函数,那么它必须是你做的第一件事.这对我来说是个问题,因为我有以下设置.
public Constructor(TypeA a, TypeB b, TypeC c) {
if (c.getData() == null) throw new IllegalArgumentException("");
this(a, b, c.getOtherData());
}
public Constructor(TypeA a, TypeB b, TypeD d) {
// stuff happens
}
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做,避免"构造函数调用必须是构造函数中的第一个语句"错误?
你不能用构造函数做你想做的事。相反,使用静态工厂方法,如下所示:
public static TypeThing buildMyThing(TypeA a, TypeB b, TypeC c) {
if (c.getData() == null) throw new IllegalArgumentException("");
return new TypeThing(a, b, c.getOtherData());
}
public Constructor(TypeA a, TypeB b, TypeD d) {
// stuff happens
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |