我有以下Trip类:
class Trip {
final ArrayList<GpsPoint> gpsPoints;
final String name;
Trip(String name, ArrayList<GpsPoint> gpsPoints) throws SpecialException {
if (gpsPoints.size() < 5) {
throw SpecialException("not enough GPS points");
}
this.name = name;
this.gpsPoints = gpsPoints;
}
}
现在我想返回一个 new trip对象,如下所示:
// method inside trip class
Trip makeTripWithNewName(String newName) {
return new Trip(newName, this.gpsPoints);
}
但是这个方法必须抛出SpecialException,即使我绝对肯定不会发生异常(因为当Trip对象已经被构造并且我们只需要重命名它时,它将至少有5个点)。
如何避免输入
Trip makeTripWithNewName(String newName) throws SpecialException {
...
}
答案 0 :(得分:1)
rename
听起来像一个mutator方法。因此,传统上您希望对对象本身进行更改,而不是返回新对象。那么,rename
就像这样:
public void rename(String name) {
this.name = name;
}
确保name
不是final
。
但是,如果您打算返回仅更改名称的对象副本,则代码看起来不错。如果您不想处理异常,可以考虑通过将SpecialException
作为RuntimeException
的子类来使{{1}}成为未经检查的异常。
答案 1 :(得分:-1)
Trip makeTripWithNewName(String newName) {
try {
return new Trip(newName, this.gpsPoints);
} catch (SpecialException exception) {
// This code path will never be reached
throw new RuntimeException(exception);
}
}