検索

ホームページ  >  に質問  >  本文

java - 看内部类教程看到一个public Destionation destionation(String str){} 这是什么鬼?

教程在====下面,其中第二行
public Destionation destionation(String str) { 这句话是什么鬼,还有第三行是什么鬼?
Destionation 这是个类?还是个方法?
第三行那个类可以实现一个方法是什么鬼?好乱啊,有高手可以看懂到底什么意思吗?

============================================================================
网址在此http://wiki.jikexueyuan.com/project/java-enhancement/java-eight.html
四、局部内部类 四、局部内部类
有这样一种内部类,它是嵌套在方法和作用于内的,对于这个类的使用主要是应用与解决比较复杂的问题,想创
建一个类来辅助我们的解决方案,到那时又不希望这个类是公共可用的,所以就产生了局部内部类,局部内部类
和成员内部类一样被编译,只是它的作用域发生了改变,它只能在该方法和属性中被使用,出了该方法和属性就
会失效。
对于局部内部类实在是想不出什么好例子,所以就引用《Think in Java》中的经典例子了。
定义在方法里:

public class Parcel5 {
    public Destionation destionation(String str) {
        class PDestionation implements Destionation {
            private String label;

            private PDestionation(String whereTo) {
                label = whereTo;
            }

            public String readLabel() {
                return (label);
            }
        }

        return (new PDestionation(str));
    }

    public static void main(String[] args) {
        Parcel5 parcel5 = new Parcel5();
        Destionation d = parcel5.destionation("chenssy");
    }
}

定义在作用域内:

public class Parcel6 {
    private void internalTracking(boolean b) {
        if (b) {
            class TrackingSlip {
                private String id;

                TrackingSlip(String s) {
                    id = s;
                }

                String getSlip() {
                    return id;
                }
            }

            TrackingSlip ts = new TrackingSlip("chenssy");
            String string = ts.getSlip();
        }
    }

    public void track() {
        internalTracking(true);
    }

    public static void main(String[] args) {
        Parcel6 parcel6 = new Parcel6();
        parcel6.track();
    }
}
怪我咯怪我咯2806日前833

全員に返信(1)返信します

  • 高洛峰

    高洛峰2017-04-18 09:05:26

    1. PDestionation は内部クラスです
    2. 内部クラスはメソッド内で定義できます
    3. このクラスは "return (new PDestionation(str))" という行に注意してください。 ;", これはメソッドのメソッド本体です。

    添付 1: PDestionation は Destionation クラスのサブクラスです。最初に「Java で考える」を読むことをお勧めします。
    添付 2: Parcel はパッケージであり、各 Parcel には独自の Desctionation があります。 、これは非常に重要な英語です。

    返事
    0
  • キャンセル返事