时间:2023-04-18
标签: #Java #局部内部类
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("slip");
String s = ts.getSlip();
}
// Can't use it here! Out of scope:
//- TrackingSlip ts = new TrackingSlip("x");
}
public void track() {
internalTracking(true);
}
public static void main(String[] args) {
Parcel6 p = new Parcel6(); p.track();
}
}
——————
这么做的意义是什么,直接创建一个 String trackingSlip = “slip”; 不好么
在这个例子中,Parcel6
类中的 internalTracking
方法使用了一个局部内部类 TrackingSlip
。局部内部类是定义在方法中的类,其作用范围仅限于该方法。这样做的目的是将类的实现细节隐藏在方法中,使得类在方法外部无法访问。
局部内部类适用于以下情况:
-
当一个类仅在某个方法中有用,而在方法外部没有任何作用时,可以考虑使用局部内部类。这样可以将实现细节封装在方法内部,提高代码的可读性和维护性。
-
局部内部类可以访问方法中的局部变量(前提是局部变量需要被声明为
final
或实际上是final
),这使得局部内部类可以与方法的其他部分共享状态。
在这个例子中,TrackingSlip
类仅在internalTracking
方法中有意义,因此将其定义为局部内部类是合理的。这使得TrackingSlip
类在方法外部无法访问,从而实现了一种封装。
当然,你提到的直接创建一个String trackingSlip = "slip";
也是一种解决方案,但这个例子主要是为了展示局部内部类的概念和使用方法。在实际开发中,如果局部内部类的功能可以简单地用一个变量或简单的方法来实现,那么采用更简单的方案通常是更好的选择。