【Java】 The method append(String) is undefined for the type StringBuilder 解決方法

本記事では、StringBuiderを使用した際に発生したエラーである

The method append(String) is undefined for the type StringBuilderについての原因、及び解決方法を紹介します。

StringBuiderとは

文字列を連続して連結することを得意としたクラスです。

java.langパッケージに含まれています。

java.langパッケージは、頻繁に使われるためimportしなくても自動でimportしてくれます。

https://docs.oracle.com/javase/jp/8/docs/api/java/lang/StringBuilder.html

エラーとなったソースコード

The method append(String) is undefined for the type StringBuilderと怒られたソースコードの例となります。

public class StringBuilder{
    public static void main(String[] args){
        StringBuilder sb = new StringBuilder();
        sb.append("Hello");
    }
}

原因

The method append(String) is undefined for the type StringBuilderを翻訳すると

「appendメソッドは、StringBuiderクラスで定義されていません」という意味になります。

あれ、StringBuiderには、appendメソッドは確かにあるはずです。

しかし、このソースコードは、StringBuilderというクラスを宣言しています。

したがって、3行目であるStringBuilder sb = new StringBuilder();のStringBuiderは、java.lang.StringBuilderではなく、エラーとなったソースコードのStringBuilderで解釈されてしまったことが原因となります。

解決方法

1:クラス名の変更

エラーとなったソースコードのStringBuilderのクラス名を変更することで、このエラーは解消されます。

public class StringBuilderTest{
    public static void main(String[] args){
        StringBuilder sb = new StringBuilder();
        sb.append("Hello");
    }
}

2:java.lang.StringBuilderと明示する

3行目であるStringBuilder sb = new StringBuilder();のStringBuiderをjava.lang.StringBuilderと明示することで、エラーを解消できます。

public class StringBuilder{
    public static void main(String[] args){
        java.lang.StringBuilder sb = new java.lang.StringBuilder();
        sb.append("Hello");
    }
}

しかし、同名クラスがあると後先混乱を招くことは容易に想像できるため、クラス名を変更することが賢明であると考えられます。

まとめ

The method append(String) is undefined for the type StringBuilderについての原因、及び解決方法を紹介しました。

StringBuilderに限らず、他のAPIを使う際、同名クラスを宣言すると同様なエラーとなります。

クラス名のつけ方に注意しましょう。