java – 在调用超级构造函数之前检查变量的有效性

所以我正在编写一些代码,这些代码涉及扩展我之前编写的类,其中创建文件并使用构造函数命名,该构造函数采用名称和类型为long的大小.在该原始类中,我在构造函数中验证输入的文件名包含一个“.”.字符但不需要对文件进行特定扩展.对于我正在编写的这个新类,我要求名称的扩展名为“.mp3”.但是,我的编译器不喜欢超级构造函数之前的验证.

这是我目前的代码:

public class Song extends DigitalMedia{

private String artist;
private String album;
private String name;
private long size;

public Song(String aName, long aSize, String aArtist, String aAlbum){
    super(aName, aSize);
    setArtist(aArtist);
    setAlbum(aAlbum);
}

在创建构造函数之前,有没有办法验证“aName”是否包含“.mp3”?

解决方法:

我不能说这是否是设计程序的最佳方法,但您可以在其中一个超级参数中调用验证器方法:

public Song(String aName, long aSize, String aArtist, String aAlbum){
    super(validateName(aName), aSize);
    setArtist(aArtist);
    setAlbum(aAlbum);
}

private static String validateName(String name) {
    if (whatever) {
        throw new Whatever();
    }
    return name;
}
上一篇:Java泛型 – 扩展和超级使用的特例


下一篇:Java泛型编译错误 – 类型中的方法方法(Class)不适用于参数