search

Home  >  Q&A  >  body text

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 days ago834

reply all(1)I'll reply

  • 高洛峰

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

    1. PDestionation is an internal class
    2. Internal classes can be defined inside methods
    3. This class does not implement the destionation method. Pay attention to this line "return (new PDestionation(str));", this is the method. method body.

    Attachment 1: PDestionation is a subclass of the Destionation class. It is recommended to read "Thinking in Java" first.
    Attachment 2: Parcel is a package and Destionation is the destination. Each Parcel has its own Desctionation. English is very important!

    reply
    0
  • Cancelreply