所以我正在构建一个主要供个人使用的测试库,但我有一个问题。
对于 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
}
我该怎么做才能避免“构造函数调用必须是构造函数中的第一个语句”错误?
最佳答案
你不能用构造函数做你想做的事。而是使用这样的静态工厂方法:
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
}
关于java - 抛出异常然后调用构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31385110/