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

匿名类如何具有参数?

拓拔飞飙
2023-03-14
问题内容

我不是Java专家,但我继承了一些需要修补的代码。我将源代码放入netbeans中,但出现错误:匿名类实现接口;不能有参数。

这是代码:

Executor background = Executors.newSingleThreadExecutor();
Runnable mylookupThread = new Runnable(FilePath, SearchIndex)
{
    public void run()
    { MainWindow.this.processFile(this.val$FilePath);
        Thread t = new Thread(new lookupThread(MainWindow.arrFile, true, false, this.val$SearchIndex));
        t.setName("Lookup");
        t.setPriority(10);
        t.start();
    }
};
background.execute(mylookupThread);
Executor statusThread = Executors.newSingleThreadExecutor();
Runnable myStatusThread = new Runnable()
{
    public void run()
    { MainWindow.this.updateStatus();
    }
};
statusThread.execute(myStatusThread);

错误在第二行弹出。救命?!?


问题答案:

创建mylookupThread单独的类,使其成为实例并将其传递给Executor

class LookupTask implements Runnable {
    private final String filePath, searchIndex;
    LookupTask(String filePath, String searchIndex) {
       this.filePath = filePath;
       this.searchIndex = searchIndex;
    }

    public void run() { ... } 
}
...
background.execute(new LookupTask(filePath, searchIndex));

另一种方法是使filePath, searchIndex最终:

final String filePath = ...
final String searchIndex = ...
Executor background = Executors.newSingleThreadExecutor();
Runnable mylookupThread = new Runnable() {
    public void run() { MainWindow.this.processFile(filePath);
        Thread t = new Thread(new lookupThread(MainWindow.arrFile, true, false, searchIndex));
        t.setName("Lookup");
        t.setPriority(10);
        t.start();
    }
};
background.execute(mylookupThread);


 类似资料:
  • 我整天都在寻找答案,但到目前为止我还没有太多的运气。 我的问题很简单:如何使用Jackson正确反序列化匿名对象。 它的输出是:JSON=[“com.foo.test.JacksonTest$1”,{“value”:5}],然后我得到一个异常: 线程“main”com.fasterxml.jackson.databind.JSONMappingException中出现异常:无法将类com.foo.

  • 我以为我对自己正在做的事情有很好的把握,但每当我觉得我对某事有很好的把握时,我被证明是错的:) 当我不在匿名类中时,我可以简单地执行 有人能解释为什么我可以调用方法,但不能在intent参数中使用吗?

  • 问题内容: 我想知道Python是否具有类似C#匿名类功能的东西。为了澄清,这是一个示例C#代码段: 在Python中,我会想象这样的事情: 特定要求是能够在表达式上下文中创建具有指定字段的对象(例如,可在lambda和不允许使用语句的其他地方使用),而无需其他外部声明,并且能够通过普通成员按名称访问各个组件访问语法。创建的对象还应按 组件名称 (而不是像元组那样按位置)实现结构比较。 特别是:元

  • 问题内容: 我有以下代码片段: 在这里,如何在不创建线程类实例的情况下为线程调用方法? 问题答案: 您已经在创建Thread类的实例-您对此不做任何事情。您甚至 可以不使用局部变量 来 调用: …但是我个人通常会将其分配给局部变量,然后执行您想要执行的其他任何操作(例如,设置名称等),然后启动它:

  • 匿名类是指没有类名的内部类,必须在创建时使用 new 语句来声明类。其语法形式如下: 这种形式的 new 语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。使用匿名类可使代码更加简洁、紧凑,模块化程度更高。 匿名类有两种实现方式: 继承一个类,重写其方法。 实现一个接口(可以是多个),实现其方法。 下面通过代码来说明。 程序的输出结果如下: 从输出结果可以看出,匿名内部类有

  • 我试图用java创建一个anon类 它似乎根本不起作用,它给了我一个错误,说run()方法未定义。尽管我创建了一个包含run()方法的anon类,但我是一个完全的java初学者,我大部分时间用javascript编写代码,javascript是我最熟悉的语言,我正在努力适应java的概念,所以对这里的很多人来说,这个问题可能看起来很愚蠢,我为此道歉。提前谢谢