2016-08-26 13 views
1

ジェネリックをObject []にキャストすることは可能ですか?ジェネリックTをObjectにキャストする

public class OneClass<T extends Serializable> { 

    public void someMethod() 
    { 
     T castObject = (T) value; 
     //The method createArrayOf(String, Object[]) in the type Connection is not applicable for the arguments (String, T) 
     //So method signature is createArrayOf(String, Object[]) 
     Array array = connection.createArrayOf("integer", castObject); 
    } 

    } 

しかし、私は次のようにこのジェネリックを使用するとよいでしょう:

OneClass<Integer[]> 

または

OneClass<String[][]> 
+2

キャストの構文が間違っているようです。 'Object []'にキャストする場合は '(T)'ではなく '(Object [])'でキャストしてください。 – khelwood

+0

アップデートあり。私はまだ私の答えは、 "キャスティング"問題を解決すると思う。あなたのコードはまだ変わっています。少なくともjava.lang.Arrayには** static **メソッドしかありません。だからそれをインスタンス化することには全く問題はない。しかし、それはおそらく他のいくつかのArrayクラスです。 – GhostCat

+0

@GhostCat、それは 'java.sql.Array'です。 – Wyzard

答えて

2

確かに、それが可能です。言う:

T whatever = ... coming from somewhere 

Object[] castedObjects = (Object[]) whatever; 

良い考えです。それは全く異なる議論かもしれません。しかし、その議論をするためには、より "文脈"を見なければならないでしょう - あなたの要件は何ですか?そのクラスの意図は何ですか?それらのオブジェクトの配列で何をすることになっているのですか?

しかし、あなたのすぐれた問題は簡単に修正できます。上記のように。

+0

私は私の質問を更新しました、私はそれが助けて欲しい:) – Pau