回答編集履歴
2
誤字
answer
CHANGED
@@ -2,4 +2,4 @@
|
|
2
2
|
|
3
3
|
確かに`int`のようなプリミティブ型の場合`instanceof`の右側に書けなかったりするので「型ではあるけどクラスではないので不自然」と質問者さんは感じたのだと思います。その点はおっしゃるとおりに感じます。ただし`Class`には実行時の型を表すものとしての役割があるため`int`型を実行時に区別・特定するためのマーカーとしての意味があり必要になります。
|
4
4
|
|
5
|
-
質問文にある`Array#newInstance`の例では`int[]`と`Integer[]`のどちらも生成できなくては困ります。それができるようにするためには`Integer.class`と同様に`int`を表す`Class`オブジェクトが必要なので
|
5
|
+
質問文にある`Array#newInstance`の例では`int[]`と`Integer[]`のどちらも生成できなくては困ります。それができるようにするためには`Integer.class`と同様に`int`を表す`Class`オブジェクトが必要なので、`int.class`と書くと`int`用の`Class`オブジェクトを表すという仕様になっているのです。要は若干の不自然さはあったとしても「より意味のある一貫性の方を保つ」ように設計されていると言えるでしょう。
|
1
誤字変更
answer
CHANGED
@@ -2,4 +2,4 @@
|
|
2
2
|
|
3
3
|
確かに`int`のようなプリミティブ型の場合`instanceof`の右側に書けなかったりするので「型ではあるけどクラスではないので不自然」と質問者さんは感じたのだと思います。その点はおっしゃるとおりに感じます。ただし`Class`には実行時の型を表すものとしての役割があるため`int`型を実行時に区別・特定するためのマーカーとしての意味があり必要になります。
|
4
4
|
|
5
|
-
質問文にある`Array#newInstance`の例では`int[]`と`Integer[]`のどちらも生成できなくては困ります。それができるようにするためには`Integer.class`と同様に`int`を表す`Class`オブジェクトが必要なのです。そこで`int.class`と書くと`int`用の`Class`オブジェクトを表すという仕様になっているのです。要は若干の不自然さはあったとしても「より意味のある一貫性の方を保つ」ように設計されている
|
5
|
+
質問文にある`Array#newInstance`の例では`int[]`と`Integer[]`のどちらも生成できなくては困ります。それができるようにするためには`Integer.class`と同様に`int`を表す`Class`オブジェクトが必要なのです。そこで`int.class`と書くと`int`用の`Class`オブジェクトを表すという仕様になっているのです。要は若干の不自然さはあったとしても「より意味のある一貫性の方を保つ」ように設計されていると言えるでしょう。
|