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

必须使用GeoLocation类型的封闭实例来限定分配

费秦迟
2023-03-14
问题内容

我收到此错误为-

无法访问类型为GeoLocation的封闭实例。
必须使用类型为GeoLocation的封闭实例来限定分配(例如xxA(),其中x是GeoLocation的实例)。

新的ThreadTask(i)
上将出现此错误。我不知道为什么会这样。任何建议将不胜感激。

public class GeoLocation {
    public static void main(String[] args) throws InterruptedException {
        int size = 10;

        // create thread pool with given size
        ExecutorService service = Executors.newFixedThreadPool(size);

        // queue some tasks
        for(int i = 0; i < 3 * size; i++) {
            service.submit(new ThreadTask(i));
        }

        // wait for termination        
        service.shutdown();
        service.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS); 
    }

    class ThreadTask implements Runnable {
        private int id;

        public ThreadTask(int id) {
            this.id = id;
        }

        public void run() {
            System.out.println("I am task " + id);
        }
    }

}

问题答案:

嗨,我找到了一个解决方案;-)

发生此错误的原因是,您尝试创建内部类的实例service.submit(new ThreadTask(i)); 而不创建主类的实例。

要解决此问题,请首先创建主类的实例:

GeoLocation outer = new GeoLocation();

然后创建要调用的类的实例,如下所示:

service.submit(outer.new ThreadTask(i));

我希望这能解决您的问题;-)



 类似资料:
  • 如何修复以下错误?我需要快速的帮助。 线程“main”java.lang中出现异常。错误:未解决的编译问题:无法访问main类型的封闭实例。必须使用Main类型的封闭实例限定分配(例如x.new A(),其中x是Main的实例)。 位于com.common.Main.Main(Main.java:16) 这是我的代码供参考。如果我们解决了这个问题,那么应该只打印一次,而不是两次。如何限制“John

  • 我是编程新手,明年我将在大学学习它。在我的公共静态空虚主...我不能创建一个新的SimpleCircle。这个错误只发生在我的圆上。非常感谢你的帮助!:)

  • 问题内容: 我有一个内部类(非静态),该类在初始化时使用对封闭类的引用。内部类现在会保留对封闭类的引用吗? 更新 我非常清楚, 可以使用 引用外部类。 但是,如果该类不使用引用, 必须 参考是编译之后呢?即使仅在初始化中使用引用也有必要吗? 它在哪里说内部类 总是 持有对外部类的引用? 问题答案: 非静态嵌套类 始终 包含对封闭类的引用。在你的榜样,你可以从引用封闭类的。 JLS 8.1.3“内部

  • 问题内容: 出于教育目的,我尝试制作一个服务器和一个客户端,其中服务器从多个客户端接收数据并回显每条消息。问题是,当我尝试让服务器一次将回显发送到所有客户端时。 我搜寻并回答了许多类似的问题,但是没有一个对我有帮助。希望你能指出我的错误。提前致谢。 问题答案: 您的嵌套类需要外部类的一个实例,因为它不是静态的-但你不 具备 外部类的一个实例。 尝试制作两个嵌套类。看起来他们无论如何都不 需要 引用

  • 问题内容: 包含的封闭实例 下面是代码。是我要使用的对象,它给了我上面的错误。 目前尚不清楚原因。 问题答案: 您正在尝试使用非静态内部类而没有其所属的实例。 非静态内部类必须属于其父类的实例 您可能应该更改为普通类或静态内部类。 或者,您可以编写以创建属于该实例的内部类的实例。

  • 我想让具有多个内部类的抽象类对其进行扩展,并可以通过静态方法创建其内部类的实例,但我得到编译器错误“无法访问ITask类型的封闭实例。必须使用ITask类型的封闭实例限定分配(例如,x.new A(),其中x是ITask的实例)。” 我发现内部类应该由外部类的实例创建,但是我的外部类有抽象方法,我不能创建它的实例。我创建了扩展父类的内部类,因为我习惯于控制它们的创建。那么有没有办法让我的模式发挥作