[解決済み] コンストラクタは、指定された型に適用できないのですか?
2022-01-25 15:42:40
質問
次のようなJavaコードがあります。
public class WeirdList {
/** The empty sequence of integers. */
/*ERROR LINE */ public static final WeirdList EMPTY = new WeirdList.EmptyList();
/** A new WeirdList whose head is HEAD and tail is TAIL. */
public WeirdList(int head, WeirdList tail) {
headActual = head;
tailActual = tail;
}
/** Returns the number of elements in the sequence that
* starts with THIS. */
public int length() {
return 1 + this.tailActual.length();
}
/** Apply FUNC.apply to every element of THIS WeirdList in
* sequence, and return a WeirdList of the resulting values. */
public WeirdList map(IntUnaryFunction func) {
return new WeirdList(func.apply(this.headActual), this.tailActual.map(func));
}
/** Print the contents of THIS WeirdList on the standard output
* (on one line, each followed by a blank). Does not print
* an end-of-line. */
public void print() {
System.out.println(this.headActual);
this.tailActual.print();
}
private int headActual;
private WeirdList tailActual;
private static class EmptyList extends WeirdList {
public int length() {
return 0;
}
public EmptyList map(IntUnaryFunction func) {
return new EmptyList();
}
public void print() {
return;
}
}
そして、「"constructor cannot be applied to given type"」というエラーが出続けています...。これは、スーパークラスのサブクラスは、スーパークラスと同じ数のパラメータをコンストラクタに持たなければならないということでしょうか?小一時間、壁に頭を打ち付けています。
どうすればいい?
サブクラスは、コンストラクタにスーパークラスと同じ数のパラメータを持つコンストラクタを持つ必要はありません" が する は、自身のコンストラクタからそのスーパークラスのコンストラクタのいくつかを呼び出さなければなりません。
スーパークラスに引数なしのコンストラクタがある場合、スーパークラスのコンストラクタの明示的な呼び出しが省略されたり、サブクラスに明示的なコンストラクタがまったくない場合(あなたの場合)、デフォルトで呼び出されます。しかし、あなたのスーパークラスには引数なしのコンストラクタがないため、コンパイルに失敗します。
このようなものを
EmptyList
:
private EmptyList() {
super(0, null);
}
また、両方のクラスが継承する抽象的なスーパークラスを用意する方がよいかもしれませんが、それは選択の自由です。
関連
-
[解決済み】"実引数リストと形式引数リストの長さが異なる"
-
[解決済み】エラー。Selection does not contain a main type
-
[解決済み】Java、"変数名 "を変数に解決することができない
-
[解決済み】スレッド「main」での例外 java.lang.StringIndexOutOfBoundsException: 文字列のインデックスが範囲外です。0 [閉店]
-
[解決済み] hibernate のプロパティが見つかりません。
-
[解決済み】Eclipseで「公開型 <<classname>> は独自のファイルで定義する必要があります」エラー【重複あり
-
[解決済み] [Solved] java.lang.NoClassDefFoundError: クラスXXXを初期化できませんでした。
-
[解決済み】どういう意味か。Serializableクラスがstatic final serialVersionUIDフィールドを宣言していないとは?重複している] [重複している] [重複している] [重複している
-
[解決済み】Eclipseで「パッケージエクスプローラー」ビューが見つからない
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Javaパッケージが存在しないエラー
-
[解決済み】エラー:'if'のない'else'エラー
-
[解決済み】「'void' type not allowed here」エラーの原因とは?
-
[解決済み】Gradleがtools.jarを見つけ出さない
-
[解決済み] intellijが自動配線リポジトリにタイプのBeanが見つからないと不正確な発言をする件
-
[解決済み】Javaを使用するSelenium - ドライバの実行ファイルのパスは、webdriver.gecko.driverシステムプロパティで設定する必要があります。
-
[解決済み】Hibernateの例外「failed to lazily initialize a collection of role」の解決方法
-
[解決済み】Java Error "Exception in thread "main" java.util.InputMismatchException" Array プログラムで発生。
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。
-
[解決済み】 executeQuery()でデータ操作文が発行できない。)