方法和作用域中创建类

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.总结

某些场景下好用,定义内部类的时候如果在方法中定义,可以在不同的方法中定义相同名称的类,不用考虑重复,缺点是代码可能会变得复杂,不容易读懂.

通常情况下,一般用匿名内部类,很少在方法和作用域中定义类.

 

posted @ 2023-02-04 22:14  随意的马蒂洛克  阅读(14)  评论(0编辑  收藏  举报