私は以前に書いたクラスを拡張することを含むいくつかのコードを書いています。ファイルは名前と型のサイズを取るコンストラクタ長いです。元のクラスでは、コンストラクタ内で、入力されたファイル名に "。"が1つ含まれていることを確認しました。ファイル上の特定の拡張子を必要としませんでした。私が書いているこの新しいクラスでは、名前の拡張子を ".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コンストラクタの呼び出し階層について勉強し、スーパークラスコンストラクタを最初に呼び出すことが必須であるように設計されている理由を勉強することをお勧めします。私たちが勉強するときには、事実を消化するだけではなく、そのような理由で答えを見つけようとするべきです。そうでなければ何が起こったのでしょうか。また、コンストラクタから例外がスローされた場合に何が起こるかを調べることをお勧めします。私は私の答えでこれらのことに少しを置こうとしました。http://stackoverflow.com/a/42179930/504133 –