所以我正在编写一些代码,这些代码涉及扩展我之前编写的类,其中创建文件并使用构造函数命名,该构造函数采用名称和类型为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;
}