java - 看内部类教程看到一个public Destionation destionation(String str){} 这是什么鬼?
怪我咯
怪我咯 2017-04-18 09:03:26
0
1
819

教程在====下面,其中第二行
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();
    }
}
怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
小葫芦

1,PDestionation是内部类
2,内部类可以定义在方法内部
3,并不是这个类实现了destionation方法,注意这一行“return (new PDestionation(str));”,这才是该方法的方法体。

附1:PDestionation是Destionation类的子类,建议先看看《Thinking in Java》
附2:Parcel是包裹,Destionation是目的地,每一个Parcel都有一个自己的Desctionation,英文很重要!

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板