教程在====下面,其中第二行
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();
}
}
高洛峰2017-04-18 09:05:26
1. PDestionation は内部クラスです
2. 内部クラスはメソッド内で定義できます
3. このクラスは "return (new PDestionation(str))" という行に注意してください。 ;", これはメソッドのメソッド本体です。
添付 1: PDestionation は Destionation クラスのサブクラスです。最初に「Java で考える」を読むことをお勧めします。
添付 2: Parcel はパッケージであり、各 Parcel には独自の Desctionation があります。 、これは非常に重要な英語です。