J Z*_*ane 6 java constructor extends class super
因此,我正在编写一些代码,这些代码涉及扩展我之前编写的类,其中使用构造函数创建和命名文件,该构造函数接受一个名称和一个 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);
}
Run Code Online (Sandbox Code Playgroud)
在创建该构造函数之前,有什么方法可以验证“aName”是否包含“.mp3”?
我不能说这是否是设计程序的最佳方式,但您可以在参数之一内调用验证器方法super
:
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;
}
Run Code Online (Sandbox Code Playgroud)