[20-05-16][Thinking in Java 21]Java Inner Class 5 - Nesting a class within a scope

 1 package test_14_3;
 2 
 3 public class Parcel {
 4 
 5     private void internalTracking(boolean b) {
 6         
 7         if (b) {
 8             class TrackingSlip {
 9                 private String id;
10 
11                 TrackingSlip(String s) {
12                     id = s;
13                 }
14 
15                 String getSlip() {
16                     System.out.println("this is internalTracking getSlip()");
17                     return id;
18                 }
19             }
20             
21             TrackingSlip ts = new TrackingSlip("slip");
22             String s = ts.getSlip();
23         }
24 
25     }
26 
27     public void track() {
28         
29         internalTracking(true);
30     }
31 
32     public static void main(String[] args) {
33         
34         /*
35          * TrackingSlip类被嵌入在if语句的作用域内,这并不是说该类的创建是有条件的,它其实与别的类一起编译过了
36          * 然而,在定义TrackingSlip的作用域之外,它是不可用的,除此之外,它和普通的类一样
37          */
38         Parcel p = new Parcel();
39         p.track();
40 
41     }
42 
43 }

结果如下:

this is internalTracking getSlip()

猜你喜欢

转载自www.cnblogs.com/mirai3usi9/p/12902320.html