这是我需要扩展的外部类:
public class Binary {
public Binary( byte type , byte[] data ){
_type = type;
_data = data;
}
public byte getType(){
return _type;
}
public byte[] getData(){
return _data;
}
public int length(){
return _data.length;
}
final byte _type;
final byte[] _data;
}
Run Code Online (Sandbox Code Playgroud)
这是我创建的子类:
import org.bson.types.Binary;
public class NoahId extends Binary {
public NoahId(byte[] data) {
//Constructor call must be the first statement in a constructor
super((byte) 0 , data);
}
}
Run Code Online (Sandbox Code Playgroud)
我想强制所有子类(NoahId)具有某个长度的byte []数据,否则抛出异常.如果构造函数调用必须是子类构造函数中的第一个语句,我该如何执行此类检查?
使用静态方法创建我的类允许我进行检查,但我仍然需要定义一个显式构造函数.
您可以在调用后执行检查并抛出异常super().如果在构造函数期间的任何时刻抛出异常,则该对象将被丢弃并且对调用者不可用.
如果您关注效率,可以编写一个静态方法来执行检查并抛出异常,如下所示:
super((byte) 0 , doChecks(data));
Run Code Online (Sandbox Code Playgroud)
doChecksdata如果没问题会返回不变,否则会抛出异常.
| 归档时间: |
|
| 查看次数: |
6201 次 |
| 最近记录: |