当前位置: 首页 > 面试题库 >

在Java方法中使用类定义

秦才
2023-03-14
问题内容

例:

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中使用Groovy解释器,我试图定义一个方法并调用它,下面是我的代码: 我有一个错误: 线程“main”groovy.lang.MissingMethodException中的异常:方法的无签名:script2.add()适用于参数类型:(java.lang.Integer,java.lang.Integer)值:[1,2]可能的解决方案:any(),wait(),run(),run(

  • 我写了下面的代码来满足程序要求如下: 写一个程序,读取三个整数并显示三个数字的平均值。 输入说明:在控制台输入三个整数(非负整数)。 输出注释(提示和标签):程序提示输入带有以下字符串的三个整数:“输入第一个整数。”、“输入第二个整数。”、“输入第三个整数。”然后程序打印 名称规范:您的应用程序类应该被称为Average3: 我的源代码: 我的程序编译得很好,但我知道我可以用一个关联的方法实现和调

  • 我有一门狗和猫的课,看起来像这样: 这些类都实现了我创建的一个名为Speakable的接口,它看起来像这样: 这个Speakable接口之所以存在,是因为我需要一个引用变量,允许我将狗和猫添加到同一个ArrayList中,并且仍然在它们上调用说话()方法。 我还需要重写Comparable接口的compareTo()方法,以便比较狗的名字。调用此方法时,我认为我的代码如下所示:a.compareT

  • 本文向大家介绍在Python中定义和使用抽象类的方法,包括了在Python中定义和使用抽象类的方法的使用技巧和注意事项,需要的朋友参考一下 像java一样python也可以定义一个抽象类。 在讲抽象类之前,先说下抽象方法的实现。 抽象方法是基类中定义的方法,但却没有任何实现。在java中,可以把方法申明成一个接口。而在python中实现一个抽象方法的简单的方法是: 任何从Sheep继承下来的子类必

  • 我是一名新的Java开发人员,在Java中继承的概念定义我的类时遇到了一些困难。。。 在一方面,我有一个通用的类,名为车辆,它定义了几十年的属性(带有它们的getter/setters)。我有一个扩展车辆类的车辆1类。 另一方面,我有一个名为VehicleFactory的泛型类,它定义了一个静态方法,如下所示: 问题是我想创建一个Vehicle1Factory类,它有自己的makeResult方法

  • 问题内容: 我有一个Java类:: 这给了我一个Json数组。现在,我想在JavaScript中一次又一次调用此类的method()以获得新值,因为我更新了我的数据库。我有一个数据网格,当页面首次加载此json数组中的一组值时,该网格运行良好。但是如何使用Ajax刷新数据。或者如何使用Ajax调用method()以便当我单击页面上的按钮时刷新数据。我在Java脚本中调用此方法的代码是:: 我在通过