【发布时间】:2017-06-30 00:03:51
【问题描述】:
所以我正在编写一些代码,其中涉及扩展一个我之前编写的类,在该类中创建文件并使用构造函数命名,该构造函数接受名称和大小为 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”?
【问题讨论】:
-
@J Zane 我建议你研究一下构造函数调用层次结构以及为什么它的设计方式必须首先调用超类构造函数。当我们学习时,我们不应该只是消化事实,而是应该尝试找到答案,为什么会这样,如果不是这样会发生什么错误。另外我建议你研究一下如果构造函数抛出异常会发生什么。我试图在我的回答中对这些事情做一些说明,stackoverflow.com/a/42179930/504133
标签: java class constructor extends super