1

これら2つのステートメントの違いは何ですか:-

1)

ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemServic(context.CONNECTIVITY_SERVICE);

2)

Class  connectivityClass = Class.forName(connectivityManager.getClass().getName());

として、私は両方が私に ConnectivityManager クラスのインスタンスを与えていると解釈できます。

4

1 に答える 1

1

2 番目の方法では、リフレクションを使用して ConnectivityManager クラスのオブジェクトを作成しますが、これにはパフォーマンス オーバーヘッドが伴います。したがって、最初のメソッドから、リフレクションなしで ConnectivityManager のオブジェクトを作成できるため、可能であればリフレクションを回避することを特にお勧めします。

一部の JVM では、セキュリティのために、リフレクションによってオブジェクトを作成することさえできない場合があります。また、反射によって作成されたオブジェクトを使用すると、人生がはるかに困難になります

リフレクションの詳細については、http: //docs.oracle.com/javase/tutorial/reflect/index.htmlを参照してください。

于 2013-03-07T11:35:04.470 に答える