2017-02-13 12 views
-3

のJava NetBeansでStringに変換されないカント私は私のプロジェクトでオブジェクト配列を使用しようとしていると私はエラーを取得:この行の互換性のないタイプ:オブジェクトが

incompatible types: Object cannot be converted to String 

ST1 = new String[]{emt1, emt2, emt3, emt4}; 

今、私はこのエラーの原因を突き止めるわけではありません。私を助けてください 。

Object[] ST1; 
Object emt1,emt2,emt3,emt4; 


private void jButton3ActionPerformed(ActionEvent evt) { 
    try { 
     emt1 = null; 
     emt2 = null; 
     emt3 = null; 
     emt4 = null; 
     ST1 = new String[]{emt1, emt2, emt3, emt4}; 
    } 
     .... 
+2

私はあなたのプログラムのコンセプトを理解していないので、正確に何をしようとしているか教えていただけますか? – Michael

+1

それは 'new Object [] {...}'ではないはずですか? –

+0

なぜ4つの 'Object'変数を宣言し、それらを' String'配列に入れてみますか? – khelwood

答えて

2

あなたは1は、このような文字列にすべてのオブジェクトemt1、emt2 ..をキャストするために2つの方法があります。

ST1 = new String[]{(String)emt1, (String)emt2, (String)emt3, (String)emt4}; 

それとも、あなたの属性の種類を変更するべきである:

Object emt1, emt2, emt3, emt4; 

を文字列

String emt1, emt2, emt3, emt4; 
ST1 = new String[]{emt1, emt2, emt3, emt4}; 
+0

ありがとう@YCF_L。あなたの答えは私のために働いていて、トップのアナコンよりもはっきりしています – user3518835

+0

あなたは大歓迎です@ user3518835 :) –

0

文字列はオブジェクトですが、オブジェクトは必ずしも文字列である必要はありません。

コンパイラが文字列を期待するオブジェクトである変数を使用しようとすると、コンパイラから指示されます。おそらく、emt1、emt2、emt3、emt4の変数はStringとして宣言されていたはずですか? (与えられたスニペットから伝えるのは難しい)。

1

にあなたはObjectとしてemt1,emt2,emt3,emt4を宣言しました。変数ST1に配列を割り当てる最後の行では、String配列を作成し、それにObjectの値を格納しています。これが問題の原因です。

あなたは、このようにオブジェクトを使用したいとあなたはemt1,emt2,emt3,emt4オブジェクトは、すべての文字列であることを確信している場合、あなたはこのようなあなたのコードにキャストを追加することができた場合:

ST1 = new String[] { (String) emt1, (String) emt2, (String) emt3, (String) emt4 }; 

これは動作するはずです。

+1

ありがとう@Anacron。あなたの答えは私のために働いた。 – user3518835

関連する問題