局部内部类的使用

时间: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。局部内部类是定义在方法中的类,其作用范围仅限于该方法。这样做的目的是将类的实现细节隐藏在方法中,使得类在方法外部无法访问。

局部内部类适用于以下情况:

  1. 当一个类仅在某个方法中有用,而在方法外部没有任何作用时,可以考虑使用局部内部类。这样可以将实现细节封装在方法内部,提高代码的可读性和维护性。

  2. 局部内部类可以访问方法中的局部变量(前提是局部变量需要被声明为final或实际上是final),这使得局部内部类可以与方法的其他部分共享状态。

在这个例子中,TrackingSlip类仅在internalTracking方法中有意义,因此将其定义为局部内部类是合理的。这使得TrackingSlip类在方法外部无法访问,从而实现了一种封装。

当然,你提到的直接创建一个String trackingSlip = "slip";也是一种解决方案,但这个例子主要是为了展示局部内部类的概念和使用方法。在实际开发中,如果局部内部类的功能可以简单地用一个变量或简单的方法来实现,那么采用更简单的方案通常是更好的选择。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值