为什么使用方法局部抽象内部类
2022-09-01 17:21:43
可以与方法局部内部类一起使用的法律修饰符之一是抽象。
例如:
public class Outer {
public void method(){
abstract class Inner{
}
}
}
有没有你真正使用它的情况?
您必须在SCJP考试中知道这一点。
可以与方法局部内部类一起使用的法律修饰符之一是抽象。
例如:
public class Outer {
public void method(){
abstract class Inner{
}
}
}
有没有你真正使用它的情况?
您必须在SCJP考试中知道这一点。
这些是原始问题中的一些无效假设。某些东西是合法/有效的Java并不意味着它是你需要使用或需要知道的东西。
我不记得SCJP包含奇怪的角落案例问题。
我试图想出一个案例,在这个案例中,我会使用一个在方法中声明的抽象类,但一切看起来都非常奇怪,而且设计很糟糕。然而,这是我想出的一个代码示例(恕我直言,仍然是糟糕的代码设计)
public class BatchExecutor {
public static enum ResultNotification {
JMS,
MAIL
};
public Runnable createRunnable(ResultNotification type) {
abstract class Prototype implements Runnable {
public void run() {
performBusinessLogic();
publishResult();
}
abstract void publishResult();
}
switch (type) {
case JMS: {
return new Prototype() {
void publishResult() {
//Post result to JMS
}
};
}
case MAIL: {
return new Prototype() {
void publishResult() {
//Post result to MAIL
}
};
}
}
return null;
}
private void performBusinessLogic() {
//Some business logic
}
}
我只能在这种情况下思考
class Outer {
public void method() {
abstract class A {
void bar(){}
abstract void foo();
}
class B extends A {
@Override
void foo() {
}
}
final class C extends A {
@Override
void foo() {
}
}
A a1 = new B();
A a2 = new C();
}
}
但我无法想象真正的用法