「4.11. 型の使用箇所」の編集履歴(バックアップ)一覧はこちら

4.11. 型の使用箇所 - (2012/09/10 (月) 17:10:30) の最新版との変更点

追加された行は緑色になります。

削除された行は赤色になります。

*[[4. 型と値と変数]] **[[4.1. 型と変数の種類]] **[[4.2. プリミティブ型と値]] **[[4.3. 参照型と値]] **[[4.4. 型変数]] **[[4.5. 引数付き型]] **[[4.6. 型の抹消]] **[[4.7. 具象可能型]] **[[4.8. 未加工型]] **[[4.9. 交差型]] **[[4.10. 型サブタイプ化]] **[[4.11. 型の使用箇所]] 宣言や特定の式内において型は使用されます。 #divstyle(background-color:#f0f0ff;border:1px solid black;padding 4px){{{ &bold(){&aname(ex4.11-1,option=nolink){例4.11-1. 型の使用}} import java.util.Random; import java.util.Collection; import java.util.ArrayList; class MiscMath<T extends Number> { int divisor; MiscMath(int divisor) { this.divisor = divisor; } float ratio(long l) { try { l /= divisor; } catch (Exception e) { if (e instanceof ArithmeticException) l = Long.MAX_VALUE; else l = 0; } return (float)l; } double gausser() { Random r = new Random(); double[] val = new double[2]; val[0] = r.nextGaussian(); val[1] = r.nextGaussian(); return (val[0] + val[1]) / 2; } Collection<Number> fromArray(Number[] na) { Collection<Number> cn = new ArrayList<Number>(); for (Number n : na) cn.add(n); return cn; } <S> void loop(S s) { this.<S>loop(s); } } &i(){&small(){この例では型は以下の宣言内で使用されています。:}} -&i(){&small(){[[インポートされた型>7.5. インポート宣言]]、ここでは型&tt(){Random}が、パッケージ&tt(){akios.util.Random}よりインポートされて宣言されています。}} -&i(){&small(){フィールド(とはクラス変数やクラスのインスタンス変数([[8.3.>8.3. フィールド宣言]])やインタフェースの定数([[9.3.>9.3. 9.3. フィールド (定数) 宣言]]))、ここではクラス型&tt(){MiscMath}のフィールド&tt(){divisor}が&tt(){int}型であると宣言されています。}} -&i(){&small(){[[メソッド引数>8.4.1. 仮引数]]、ここではメソッド&tt(){ratio}の引数&tt(){l}が&tt(){long}型であると宣言されています。}} -&i(){&small(){[[メソッド戻り値>8.4. メソッド宣言]]、ここではメソッド&tt(){ratio}の戻り値が&tt(){float*型であると宣言されています。さらに、メソッド&tt(){gausser}の戻り値が&tt(){double}であると宣言されています。}} -&i(){&small(){[[コンストラクター引数>8.8.1. 仮引数と型引数]]、ここでは&tt(){MiscMath}のコンストラクター引数が&tt(){int}型であると宣言されています。}} -&i(){&small(){局所変数([[14.4.>14.4. 局所変数宣言文]]、[[14.14.>14.14. for文]])、ここではメソッド&tt(){gausser}のローカル変数&tt(){r}と&tt(){val}がそれぞれ&tt(){Random}型、&tt(){double[]}型(&tt(){double}の配列)であると宣言されています。}} -&i(){&small(){[[例外引数>14.20. try文]]、ここでは&tt(){catch}節の例外引数&tt(){e}が&tt(){Exception}型であると宣言されています。}} -&i(){&small(){[[型引数>4.4. 型変数]]、ここでは&tt(){MiscMath}の型引数が&tt(){Number}型を制限とした型変数&tt(){T}が宣言されています。}} -&i(){&small(){引数付き型を使用する宣言内、ここでは&tt(){Number}型が引数付き型&tt(){Collection<number>}の型実引数として使用されています。}} &i(){&small(){さらに以下の種類の式で型が使用されています。:}} -&i(){&small(){[[クラスインスタンス作成>15.9. クラスインスタンス作成式]]、ここではメソッド&tt(){gausser}のローカル変数&tt(){r}が&tt(){Random}型を使用するクラスインスタンス作成式によって初期化されています。}} -&i(){&small(){[[ジェネリッククラス>8.1.2. ジェネリッククラスと型引数]]の[[クラスインスタンス作成>15.9. クラスインスタンス作成式]]、ここでは&tt(){Number}が&tt(){new ArrayList<Number>()}式の型実引数として使われています。}} -&i(){&small(){[[配列作成>15.10. 配列作成式]]、ここではメソッド&tt(){gausser}のローカル変数&tt(){val}が2個の&tt(){double}の配列を作成する配列作成式によって初期化されています。}} -&i(){&small(){[[ジェネリックメソッド>8.4.4. ジェネリックメソッド]]や[[コンストラクター>8.8.4. ジェネリックコンストラクター]]}、ここではメソッド&tt(){loop}が明示的型実引数&tt(){S}を伴って呼び出されています。}} -&i(){&small(){[[キャスト>15.16. キャスト式]]、ここではメソッド&tt(){ratio}の&tt(){return}文で&tt(){float}型へのキャストが使われています。}} -&i(){&small(){[[instanceof演算子>15.20.2. 型比較演算子instanceof]]、ここでは&tt(){instanceof}演算子によって&tt(){e}が&tt(){ArithmeticException}型と代入互換(assignment-compatible)であるか判定しています。}} **[[4.12. 変数]]
*[[4. 型と値と変数]] **[[4.1. 型と変数の種類]] **[[4.2. プリミティブ型と値]] **[[4.3. 参照型と値]] **[[4.4. 型変数]] **[[4.5. 引数付き型]] **[[4.6. 型の抹消]] **[[4.7. 具象可能型]] **[[4.8. 未加工型]] **[[4.9. 交差型]] **[[4.10. サブタイプ化]] **4.11. 型の使用箇所 宣言や特定の式内において型は使用されます。 #divstyle(background-color:#f0f0ff;border:1px solid black;padding 4px){{{ &bold(){&aname(ex4.11-1,option=nolink){例4.11-1. 型の使用}} import java.util.Random; import java.util.Collection; import java.util.ArrayList; class MiscMath<T extends Number> { int divisor; MiscMath(int divisor) { this.divisor = divisor; } float ratio(long l) { try { l /= divisor; } catch (Exception e) { if (e instanceof ArithmeticException) l = Long.MAX_VALUE; else l = 0; } return (float)l; } double gausser() { Random r = new Random(); double[] val = new double[2]; val[0] = r.nextGaussian(); val[1] = r.nextGaussian(); return (val[0] + val[1]) / 2; } Collection<Number> fromArray(Number[] na) { Collection<Number> cn = new ArrayList<Number>(); for (Number n : na) cn.add(n); return cn; } <S> void loop(S s) { this.<S>loop(s); } } &i(){&small(){この例では型は以下の宣言内で使用されています。:}} -&i(){&small(){[[インポートされた型>7.5. インポート宣言]]、ここでは型&tt(){Random}が、パッケージ&tt(){akios.util.Random}よりインポートされて宣言されています。}} -&i(){&small(){フィールド(とはクラス変数やクラスのインスタンス変数([[8.3.>8.3. フィールド宣言]])やインタフェースの定数([[9.3.>9.3. 9.3. フィールド (定数) 宣言]]))、ここではクラス型&tt(){MiscMath}のフィールド&tt(){divisor}が&tt(){int}型であると宣言されています。}} -&i(){&small(){[[メソッド引数>8.4.1. 仮引数]]、ここではメソッド&tt(){ratio}の引数&tt(){l}が&tt(){long}型であると宣言されています。}} -&i(){&small(){[[メソッド戻り値>8.4. メソッド宣言]]、ここではメソッド&tt(){ratio}の戻り値が&tt(){float}型であると宣言されています。さらに、メソッド&tt(){gausser}の戻り値が&tt(){double}であると宣言されています。}} -&i(){&small(){[[コンストラクター引数>8.8.1. 仮引数と型引数]]、ここでは&tt(){MiscMath}のコンストラクター引数が&tt(){int}型であると宣言されています。}} -&i(){&small(){局所変数([[14.4.>14.4. 局所変数宣言文]]、[[14.14.>14.14. for文]])、ここではメソッド&tt(){gausser}のローカル変数&tt(){r}と&tt(){val}がそれぞれ&tt(){Random}型、&tt(){double[]}型(&tt(){double}の配列)であると宣言されています。}} -&i(){&small(){[[例外引数>14.20. try文]]、ここでは&tt(){catch}節の例外引数&tt(){e}が&tt(){Exception}型であると宣言されています。}} -&i(){&small(){[[型引数>4.4. 型変数]]、ここでは&tt(){MiscMath}の型引数が&tt(){Number}型を制限とした型変数&tt(){T}が宣言されています。}} -&i(){&small(){引数付き型を使用する宣言内、ここでは&tt(){Number}型が引数付き型&tt(){Collection<number>}の型実引数として使用されています。}} &i(){&small(){さらに以下の種類の式で型が使用されています。:}} -&i(){&small(){[[クラスインスタンス作成>15.9. クラスインスタンス作成式]]、ここではメソッド&tt(){gausser}のローカル変数&tt(){r}が&tt(){Random}型を使用するクラスインスタンス作成式によって初期化されています。}} -&i(){&small(){[[ジェネリッククラス>8.1.2. ジェネリッククラスと型引数]]の[[クラスインスタンス作成>15.9. クラスインスタンス作成式]]、ここでは&tt(){Number}が&tt(){new ArrayList<Number>()}式の型実引数として使われています。}} -&i(){&small(){[[配列作成>15.10. 配列作成式]]、ここではメソッド&tt(){gausser}のローカル変数&tt(){val}が2個の&tt(){double}の配列を作成する配列作成式によって初期化されています。}} -&i(){&small(){[[ジェネリックメソッド>8.4.4. ジェネリックメソッド]]や[[コンストラクター>8.8.4. ジェネリックコンストラクター]]、ここではメソッド&tt(){loop}が明示的型実引数&tt(){S}を伴って呼び出されています。}} -&i(){&small(){[[キャスト>15.16. キャスト式]]、ここではメソッド&tt(){ratio}の&tt(){return}文で&tt(){float}型へのキャストが使われています。}} -&i(){&small(){[[instanceof演算子>15.20.2. 型比較演算子instanceof]]、ここでは&tt(){instanceof}演算子によって&tt(){e}が&tt(){ArithmeticException}型と代入互換(assignment-compatible)であるか判定しています。}} }}} **[[4.12. 変数]]

表示オプション

横に並べて表示:
変化行の前後のみ表示:
目安箱バナー