【问题标题】:Cannot instantiate the type error... but code is right?无法实例化类型错误...但是代码是对的吗?
【发布时间】:2015-05-27 07:44:53
【问题描述】:

所以我有一个大问题。当我尝试创建 Robot 类的新实例时,出现“无法实例化类型 Robot”错误。我完全理解这个错误的含义以及它何时发生,但我不明白我为什么会得到它。我发誓,我的代码是正确的。也许代码中有一个我看不到的小错误?有什么帮助吗?

得到错误的代码是 RobotWorld 类:

public class RobotWorld extends JPanel{

Robot robot;

private static final long serialVersionUID = 1L;

    public RobotWorld(){
        robot = new Robot();
        this.setBackground(Color.GREEN);
    }
}

Robot.java 类是:

public class Robot {

    public Robot(){

    }

}

我在“robot = new Robot();”行收到错误消息在 RobotWorld.java 代码中。基本上,无论我尝试在 RobotWorld 中实例化一个新的 Robot 对象,它都会给我一个错误。我什至在创建实例变量robot时尝试过这样做,仍然没有工作。

这两个类都在同一个包中,所以我看不出它怎么可能是某种类范围错误。谁能告诉我为什么会出现这个错误?

请注意,我重新启动了 Eclipse 几次以确保它不仅仅是 Eclipse 在起作用。

谢谢!

【问题讨论】:

  • 您是否可能在多个地方不小心定义了Robot?例如,RobotWorld 是否可能在某处包含 private interface Robot { ... } 或类似的东西,您打算删除然后忘记了? (要对此进行测试,请单击Robot robot; 中的Robot,然后按F3 进入Eclipse 认为适用的声明。)

标签: java instantiation instantiationexception


【解决方案1】:

更新:

看来您可能已经导入了import com.sun.glass.ui.Robot;,它是一个抽象类,无法实例化。

确保删除错误机器人类的所有导入语句。

您可能还需要考虑重命名您自己的 Robot 类,以免混淆。

【讨论】:

  • 如果他的类代表一个机器人,那他为什么要重命名呢?毕竟,这就是命名空间的用途。 + 即使他使用Java.awt.Robot,也不会出现错误,因为 awt.Robot 不是抽象的,应该是可实例化的。
  • 你不能像这样实例化一个 Robot 类,因为你没有捕捉到它可能抛出的 AWTException,你会得到一个编译器错误。我们不知道他的确切错误,因为他没有发布。此外,这只是防止混淆的建议。我不明白你为什么会投反对票。
  • Rouby,实际上看起来我是对的,他导入了错误的 Robot 类,只是他似乎导入了import com.sun.glass.ui.Robot;
  • 我投了反对票,因为我不认为这是一个有效的答案。在他的标题中,他指定了错误“无法实例化类型”。新的 java.awt.Robot 给出了 AWTException。
  • 我明白了,这是有道理的。我已经更新了我的答案以纠正这个错误,并且我认为这可能是直接的问题。
猜你喜欢
  • 2017-07-04
  • 2014-03-16
  • 2023-02-10
  • 1970-01-01
  • 2013-05-13
  • 2014-10-27
  • 2015-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多