ページの作成:「< Java基本文法 # <u>メンバクラス</u>:クラスブロック内部、フィールドやメソッドと一緒に定義 # <u>ローカルクラス</u>:メ…」
 
 
(同じ利用者による、間の19版が非表示)
1行目: 1行目:
< [[Java基本文法]]
< [[Java基本文法]]


# <u>メンバクラス</u>:クラスブロック内部、フィールドやメソッドと一緒に定義
==1. メンバクラス==
# <u>ローカルクラス</u>:メソッド内部に定義
クラスブロック内部、フィールドやメソッドと一緒に定義(static有無で用途が違う)
# <u>匿名クラス</u>:親クラス名を利用してメソッド内部でnewしてしまう
 
==2. ローカルクラス==
メソッド内部に定義。そのメソッド内でのみ複数回使いたい時に利用
public class Outer {
    int field;
    void method() {
        int a = 10;
        <u>class Inner</u> {
            public void innerMethod() {
                System.out.println("This is innerMethod.");
            }
        }
        Inner inn = new Inner();
        inn.innerMethod();
    }
}
 
==3. 匿名クラス==
スーパークラス名を利用してインスタンス化と定義を同時にしてしまう。使い捨てクラス。ただ、匿名クラスを使うよりも [[ラムダ式]] を使う方がスマート。
public class Main {
    public static void main(String[] args) {
        pocket<Object> poc = new Pocket<>();
        System.out.println("Make Anonymous Instance and into the Pocket at a same time.");
        poc.put(<u>new Object()</u> {
            String field;
            void method() {...}
        });
    }
}

2019年7月16日 (火) 15:25時点における最新版

< Java基本文法

1. メンバクラス

クラスブロック内部、フィールドやメソッドと一緒に定義(static有無で用途が違う)

2. ローカルクラス

メソッド内部に定義。そのメソッド内でのみ複数回使いたい時に利用

public class Outer {
    int field;
    void method() {
        int a = 10;
        class Inner {
            public void innerMethod() {
                System.out.println("This is innerMethod.");
            }
        }
        Inner inn = new Inner();
        inn.innerMethod();
    }
}

3. 匿名クラス

スーパークラス名を利用してインスタンス化と定義を同時にしてしまう。使い捨てクラス。ただ、匿名クラスを使うよりも ラムダ式 を使う方がスマート。

public class Main {
    public static void main(String[] args) {
        pocket<Object> poc = new Pocket<>();
        System.out.println("Make Anonymous Instance and into the Pocket at a same time.");
        poc.put(new Object() {
            String field;
            void method() {...}
        });
    }
}