teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

誤字

2016/09/27 01:37

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

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`オブジェクトを表すという仕様になっているのです。要は若干の不自然さはあったとしても「より意味のある一貫性の方を保つ」ように設計されていると言えるでしょう。

1

誤字変更

2016/09/27 01:37

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

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`オブジェクトを表すという仕様になっているのです。要は若干の不自然さはあったとしても「より意味のある一貫性の方を保つ」ように設計されていると言えるでしょう。