2017-09-10 9 views
1

私は狂っています! Characterコンストラクタはe char引数を受け取るはずですか?キャラクターがゼロ引数コンストラクタを必要としています

私はこれをコンパイルしようとすると、なぜ、それは私にコンパイルエラーを与える:

public class TestClass { 

    public static void main(String[] args) { 
    char c = 'a'; 
    Character cObj = new Character(c); 
    } 
} 

エラーは次のとおりです。

TestClass.java:5: error: constructor Character in class Character cannot be applied to given types; 
    Character cObj = new Character(c); 
       ^
    required: no arguments 
    found: char 
    reason: actual and formal argument lists differ in length 
1 error 

また、私はこれをコンパイルしようとした場合:

public class TestClass { 

    public static void main(String[] args) { 
    char c = 'a'; 
    Character cObj = Character.valueOf(c); 
    } 
} 

入手方法:

TestClass.java:5: error: cannot find symbol 
    Character cObj = Character.valueOf(c); 
         ^
    symbol: method valueOf(char) 
    location: class Character 
1 error 

これは、最新のOracle Javaバージョン "1.8.0_144"を使用しているMacOS Sierra 10.12.6で発生しています。

OpenJDk 8を使ってLinux上で同じコードをコンパイルしようとすると、すべてがコンパイルされます。

私には何が欠けていますか?

+2

私は、あなたが(誤って) 'java.lang.Character'を使用していないと思っていますが、自分で書いた別の' Character'クラスです。あなたが書いたコードは、それ自身でうまく動作します。 (確かに自動ボクシングを使うほうが簡単です: 'Character cObj = 'a';') –

+0

これは私の推測ですが、私はCaracterクラスo_Oを書いていません。また、自動ボクシングもコンパイルされません。 – k3rn31

+0

クラスパスのどこかで 'Character.class'というファイルを探すことをお勧めします。 autoboxingのためにコンパイルエラーを表示します。 (私は 'Integer'などで似たようなことをしようとしています) –

答えて

0

Javaはあなたが

Character cObj = 'a'; 

または

char c = 'a'; 
Character cObj = c; 

をだけを行うことができますが、このeventhoeは必要ありません

char c = 'a'; 
Character cObj = new Character(c); 

は、あなた必ず仕事をしなければならないラッパークラスにボクシングのプリミティブをサポートしていますので、右をインポートしていますClass java.lang.Character

+0

どちらも動作しません。それはむしろ何かが私のクラスパスに混乱しているように見える... – k3rn31

+0

パッケージをチェックしてください...そしてプロジェクトをきれいにしてください –

関連する問題