

Javaの参考書にて数値を文字列化する演習をしていたのですが、例として載っているコードをコンパイルしようとしたところ、下記の部分に対してエラーが表示されました。  
Javaに詳しい方、教えていただけると幸いです。

**該当箇所:**

[code]

    s = Integer.toString(i , 2);
    s = integer.toString(i , 16);
    
[/code]

**エラーメッセージ:**

[code]

    不適合な型；java.lang.StringをStringに変換できません
    
[/code]

**ソースコード:**

[code]

    class String {
        public static void main(String args[]) {
            String s ;      
            int i = 45;
    
            s = Integer.toString(i , 2);
            System.out.println(s);
        
            s = Integer.toString(i , 16);
            System.out.println(s);
        }
    }
    
[/code]


CC BY-SA 4.0
2021-10-07T10:58:44.313
82939
2021-10-07T15:42:35.527
2021-10-07T11:32:17.630
3060
48530
question
java
Java で String への変換時にエラー: 不適合な型；java.lang.StringをStringに変換できません


>
[code]

>     class String {
>           public static void main(String args[]) {
>               String s ;  
>  
[/code]

この `s` は、質問者さんが作った `String` クラスのインスタンスになってます。Java標準の`String`ではなく。

自作の`String`の名前を変えるか、`s` の宣言を`java.lang.String s;`にしましょう。


CC BY-SA 4.0
2021-10-07T11:06:04.657
82941
2021-10-07T11:33:06.450
2021-10-07T11:33:06.450
3060
3475
82939
answer


質問文中のコードでは、 `String` という名前でクラスを作っていますが、Java組み込みの
[`String`](https://docs.oracle.com/javase/jp/11/docs/api/index.html)
と名前が被っているので想定と異なる状態になっています(参考: [6.4.1.
Shadowing](https://docs.oracle.com/javase/specs/jls/se17/html/jls-6.html#jls-6.4.1))。

参照されているサンプルコードでは別の名前になっていると思いますので、1行目の `String` をそちらと同じ名前に書き換えてみてください。

* * *

わかりやすいように(名前が被らないように)、質問文中のコードを書き換えると次のような感じになります。

[code]

    class MyString {
        public static void main(MyString args[]) {
            MyString s ;      
            int i = 45;
    
            s = Integer.toString(i , 2);
            System.out.println(s);
        
            s = Integer.toString(i , 16);
            System.out.println(s);
        }
    }
    
[/code]

`String` 型である `Integer.toString()` の戻り値を、 `MyString` 型の `s` に代入しようとしているので

> エラー: 不適合な型: StringをMyStringに変換できません

というコンパイルエラーになります。


CC BY-SA 4.0
2021-10-07T14:34:47.957
82949
2021-10-07T15:42:35.527
2021-10-07T15:42:35.527
2808
2808
82939
answer