2017-10-18 7 views
-4

ジェネリックスがInteger型であるかどうかを確認したいと思いました。もしそうであれば、彼らは二重に変換され、その後一緒に追加されるべきです。エラー "演算子*は、引数の型E、double"で定義されていません。後で2つのキャストされた値を一緒に追加することで同じ問題があります。ジェネリックはキャストして一緒に追加しないでください

どうすればこの問題を解決できますか?事前に

感謝:)

public void add(E value1, E value2) { 
      if(value1 instanceof Integer && value2 instanceof Integer) { 
       double valueCast1 = value1 * 1.0; 
       double valueCast2 = value2 * 1.0; 
       System.out.println(value1 + value2); 
      } 
     } 
+1

を倍増するために型キャストすることができるはずですか? – Kayaman

+0

私はKayamanが何を求めているのかというと、なぜ何かに何かを掛けたいと思うのです。 – Griffin

+0

JavaとJavaScriptは2つの異なる言語です... * 1.0はjavascript用です... –

答えて

-1

私が正しくリコール場合は、それはそれを確認した後に自己をキャストだとしてジェネリックを使用する必要がタイプなので

(int)value1 

それはあるかもしれないが、

+0

これは、 'value1'と' value2'が 'Integer'として宣言された場合にのみ有効です。 'E'には制限がないので、' real'型は 'int'にキャストできない' Object'です。 –

1

整数値のキャストを追加する必要があります。彼らは整数だった場合は、事前にチェックしましたが、文章

double valueCast1 = value1 * 1.0; 
double valueCast2 = value2 * 1.0; 

に、彼らはまだだけで、一般的なEクラスなります。

double valueCast1 = (Integer)value1 * 1.0; 
double valueCast2 = (Integer)value2 * 1.0; 

これはそれだと指定する必要があります。代わりに1を掛けるの

-1

あなたが直接あなたがこのようなコードを記述し、なぜそれが

double valueCast1= (double)value1; 
double valueCast2 = (double)value2; 
+0

静的型が 'E'(実際この場合は' Object')で、実行時の型が 'Integer'で、どちらも' double'に直接キャストできないため、Javaでは動作しません。 –

+0

私の悪いです。整数はJavaで直接Doubleに型キャストすることはできません。 double valueCast1 =((Integer)(value1))を助けるIntegerクラスのメソッドを見つけました。 doubleValue(); double valueCast2 =((整数)(値2))。 doubleValue(); – Tphil

関連する問題