方法和作用域中创建类
1.方法中创建类
类不仅可以在类的内部创建,也可以在方法和作用域中创建.
public class Parcel5 {
public Destination destination(String s) {
final class PDestination implements Destination{
private String label;
private PDestination(String whereTo) {
label = whereTo;
}
@Override
public String readLabel() { return label;}
}
return new PDestination(s);
}
}
可以看到在Parcel5中的destination方法中创建了PDestination这个类,但是这个类只能在这个方法中使用,不能超出方法的作用域.
2.作用域中创建类
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();
}
}
public void track() { internalTracking(true);}
}
这个代码中, 在if语句中创建了TrackingSlip类,但是TrackingSlip只能在if的作用域中使用,超出作用域会报编译错误.
3.总结
某些场景下好用,定义内部类的时候如果在方法中定义,可以在不同的方法中定义相同名称的类,不用考虑重复,缺点是代码可能会变得复杂,不容易读懂.
通常情况下,一般用匿名内部类,很少在方法和作用域中定义类.