4

この質問の仕方がよくわからないので、タイトルなどもよくわかりません。ここに行きます。

object があるとしますFoo foo = new Foo()new ArrayList<foo.getClass()>()実行時に と同等になるのようなコードを書くことは可能new ArrayList<Foo>()ですか?

関連する別の質問は次のとおりです。クラスFooが拡張するとしますException。次に、次のようなものを書くことは可能ですか

try{
    // ...
} catch(foo.getClass() e) {
    //
}

これはに変換されます

try{
    // ...
} catch(Foo e) {
    //
}

?

これを行うのが恐ろしいかどうかは、重要な部分ではありません。しかし、とにかく有能な意見を聞きたいです。

4

3 に答える 3

0

Java はその構文をサポートしていませんが、インスタンスの型によって型が決定される Collection を作成することが目標の場合は、型付きメソッドを作成します。次に例を示します。

public static <T> List<T> createList(T object) {
    List<T> list = new ArrayList<T>();
    list.add(object);
    return list;
}

どの型を渡すかによって、返されるリストの型が決まります。これはランタイムの決定ではありません。これはコンパイル時のチェックですが、私があなたの意図をどのように解釈するかに最も近いものです。

于 2013-10-17T10:49:46.787 に答える