在Java方法中使用类定义

例:

public class TestClass {

public static void main(String[] args) {

TestClass t = new TestClass();

}

private static void testMethod() {

abstract class TestMethod {

int a;

int b;

int c;

abstract void implementMe();

}

class DummyClass extends TestMethod {

void implementMe() {}

}

DummyClass dummy = new DummyClass();

}

}

我发现上面的代码在Java中是完全合法的。我有以下问题。

  1. 在方法内部拥有类定义的用途是什么?
  2. 是否会为生成一个类文件 DummyClass
  3. 我很难以面向对象的方式来想象这个概念。在行为中具有类定义。也许有人可以用等效的真实例子告诉我。
  4. 方法中的抽象类对我来说听起来有点疯狂。但不允许使用任何接口。这背后有什么原因吗?

回答:

这称为本地课程。

2很简单:是的,将生成一个类文件。

1和3是同一个问题。你可以使用本地类,而无需使用一种方法来实例化一个本地类,也无需在任何地方知道实现细节。

典型的用途是创建某些接口的一次性实现。例如,你经常会看到以下内容:

  //within some method

taskExecutor.execute( new Runnable() {

public void run() {

classWithMethodToFire.doSomething( parameter );

}

});

如果你需要创建一堆并对其进行处理,则可以将其更改为

  //within some method

class myFirstRunnableClass implements Runnable {

public void run() {

classWithMethodToFire.doSomething( parameter );

}

}

class mySecondRunnableClass implements Runnable {

public void run() {

classWithMethodToFire.doSomethingElse( parameter );

}

}

taskExecutor.execute(new myFirstRunnableClass());

taskExecutor.execute(new mySecondRunnableClass());

关于接口:我不确定是否存在使本地定义的接口成为编译器问题的技术问题,但是即使没有,它们也不会增加任何价值。如果在方法之外使用了实现本地接口的本地类,则该接口将毫无意义。如果只在方法内部使用本地类,则接口和类都将在该方法内实现,因此接口定义将是多余的。

以上是 在Java方法中使用类定义 的全部内容, 来源链接: utcz.com/qa/413838.html

回到顶部