You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
205 lines
3.8 KiB
205 lines
3.8 KiB
package pkg;
|
|
|
|
class PrivateClasses {
|
|
private interface Callable<T> {
|
|
T call();
|
|
}
|
|
|
|
private static final Runnable R1 = new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
String s = "";
|
|
|
|
class NonCapturingLocalR1 {
|
|
private final String s;
|
|
|
|
public NonCapturingLocalR1(String s) {
|
|
this.s = s;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return this.s;
|
|
}
|
|
}
|
|
|
|
class CapturingLocalR1 {
|
|
private final int i;
|
|
|
|
public CapturingLocalR1(int i) {
|
|
this.i = i;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return s + ":" + i;
|
|
}
|
|
}
|
|
|
|
new NonCapturingLocalR1(s).toString();
|
|
new CapturingLocalR1(42).toString();
|
|
|
|
Callable<String> c1 = new Callable<String>() {
|
|
@Override
|
|
public String call() {
|
|
return null;
|
|
}
|
|
};
|
|
|
|
Callable<String> c2 = new Callable<String>() {
|
|
@Override
|
|
public String call() {
|
|
return s;
|
|
}
|
|
};
|
|
|
|
(c1.call() + c2.call()).length();
|
|
}
|
|
};
|
|
|
|
private final Runnable R2 = new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
String s = "";
|
|
|
|
class NonCapturingLocalR2 {
|
|
private final String s;
|
|
|
|
public NonCapturingLocalR2(String s) {
|
|
this.s = s;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return this.s;
|
|
}
|
|
}
|
|
|
|
class CapturingLocalR1 {
|
|
private final int i;
|
|
|
|
public CapturingLocalR1(int i) {
|
|
this.i = i;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return s + ":" + i;
|
|
}
|
|
}
|
|
|
|
new NonCapturingLocalR2(s).toString();
|
|
new CapturingLocalR1(42).toString();
|
|
|
|
Callable<String> c1 = new Callable<String>() {
|
|
@Override
|
|
public String call() {
|
|
return null;
|
|
}
|
|
};
|
|
|
|
Callable<String> c2 = new Callable<String>() {
|
|
@Override
|
|
public String call() {
|
|
return s;
|
|
}
|
|
};
|
|
|
|
(c1.call() + c2.call()).length();
|
|
}
|
|
};
|
|
|
|
public static void m1(String s) {
|
|
class NonCapturingLocalM1 {
|
|
private final String s;
|
|
|
|
public NonCapturingLocalM1(String s) {
|
|
this.s = s;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return this.s;
|
|
}
|
|
}
|
|
|
|
class CapturingLocalM1 {
|
|
private final int i;
|
|
|
|
public CapturingLocalM1(int i) {
|
|
this.i = i;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return s + ":" + i;
|
|
}
|
|
}
|
|
|
|
new NonCapturingLocalM1(s).toString();
|
|
new CapturingLocalM1(42).toString();
|
|
|
|
Callable<String> c1 = new Callable<String>() {
|
|
@Override
|
|
public String call() {
|
|
return null;
|
|
}
|
|
};
|
|
|
|
Callable<String> c2 = new Callable<String>() {
|
|
@Override
|
|
public String call() {
|
|
return s;
|
|
}
|
|
};
|
|
|
|
(c1.call() + c2.call()).length();
|
|
}
|
|
|
|
public void m2(String s) {
|
|
class NonCapturingLocalM2 {
|
|
private final String s;
|
|
|
|
public NonCapturingLocalM2(String s) {
|
|
this.s = s;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return this.s;
|
|
}
|
|
}
|
|
|
|
class CapturingLocalM2 {
|
|
private final int i;
|
|
|
|
public CapturingLocalM2(int i) {
|
|
this.i = i;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return s + ":" + i;
|
|
}
|
|
}
|
|
|
|
new NonCapturingLocalM2(s).toString();
|
|
new CapturingLocalM2(42).toString();
|
|
|
|
Callable<String> c1 = new Callable<String>() {
|
|
@Override
|
|
public String call() {
|
|
return null;
|
|
}
|
|
};
|
|
|
|
Callable<String> c2 = new Callable<String>() {
|
|
@Override
|
|
public String call() {
|
|
return s;
|
|
}
|
|
};
|
|
|
|
(c1.call() + c2.call()).length();
|
|
}
|
|
} |