我有一个叫做GreenhouseControls的类,它有很多
内置于其中的类,例如:
public class ThermostatNight extends Event {
public ThermostatNight(long delayTime) {
super(delayTime);
}
public void action() {
// hardware control code here.
thermostat = "Night";
}
public String toString() {
return "Thermostat on night setting";
}
}
我从文本文件中提取值以获取事件名称(如“ThermostatNight”)和时间值(如“2000”)。为了用这些值实例化一个新对象,我构建了一个EventFactory,它接受这些值作为参数。
这是我构建的类,用于从文本文件值创建新的事件对象:
public class EventFactory{
public static Event createSpecificEvent(String eventName, long delayTime) {
Event event = null;
switch(eventName) {
case "ThermostatNight":
event = new ThermostatNight(delayTime); // Compiler error
break;
case "ThermostatDay":
event = new ThermostatDay(delayTime);
break;
case "LightOn":
event = new LightOn(delayTime);
break;
case "LightOff":
event = new LightOff(delayTime);
break;
...
}
}
当我运行这个程序时,一切都运行得很好,直到我将EventFactory类从GreenHouse控件中拉出来并放入它自己的独立类。现在我得到一个编译时错误,它说:
“无法访问GreenhouseControls类型的封闭实例。必须使用GreenhouseControls类型的封闭实例限定分配(例如,x.new A(),其中x是GreenhouseControls的实例)。”
请参阅EventFactory类中的联机注释,以查看“new ThermostatNight(delayTime)”中发生错误的位置
您的类目前是内部类,需要在包含类的实例的上下文中构建。您的选择是:
静态类
类,此时它们不再是内部类就我个人而言,如果可能的话,我会选择最后一个选项——嵌套类有时是有用的,但只有在真正有好处的时候才应该使用它们。存在各种各样的限制,这些限制可能非常微妙,如果可能,最好避免。您是否有任何令人信服的理由来创建这些嵌套类?
我想让具有多个内部类的抽象类对其进行扩展,并可以通过静态方法创建其内部类的实例,但我得到编译器错误“无法访问ITask类型的封闭实例。必须使用ITask类型的封闭实例限定分配(例如,x.new A(),其中x是ITask的实例)。” 我发现内部类应该由外部类的实例创建,但是我的外部类有抽象方法,我不能创建它的实例。我创建了扩展父类的内部类,因为我习惯于控制它们的创建。那么有没有办法让我的模式发挥作
我有以下代码: 我知道什么都不做,但我的Hello,World程序没有它也可以编译。只有我定义的类在我身上失败了。 它拒绝编译。我得到在创建新事物的行中。我猜: 我有系统级问题(在DrJava或我的Java安装中)或 我对如何用java构建工作程序有一些基本的误解 有什么想法吗?
问题内容: 我有以下代码: 我知道什么Thing也没做,但是没有它我的Hello,World程序就可以编译。只有我定义的类对我不利。 并且它拒绝编译。我到达创建新事物的路线。我猜是: 我有系统级别的问题(在DrJava或Java安装中)或 我对如何在Java中构建工作程序有一些基本的误解。 问题答案: 将使你的程序正常运行。 实际上,你已经拥有一个内部类,该内部类(根据定义)与的特定实例相关联(即
当我试图在Eclipse中编译/启动我的程序时,我得到了一个错误
整个守则是: 为什么会出现以下代码段: 导致以下错误: 无法访问ThreadLocalTest类型的封闭实例。必须使用ThreadLocalTest类型的封闭实例限定分配(例如,x.new A(),其中x是ThreadLocalTest的实例)。 核心问题是:我想在静态方法中初始化内部类。这里有两种解决方案: > 使用外部引用,如:
问题内容: 出于教育目的,我尝试制作一个服务器和一个客户端,其中服务器从多个客户端接收数据并回显每条消息。问题是,当我尝试让服务器一次将回显发送到所有客户端时。 我搜寻并回答了许多类似的问题,但是没有一个对我有帮助。希望你能指出我的错误。提前致谢。 问题答案: 您的嵌套类需要外部类的一个实例,因为它不是静态的-但你不 具备 外部类的一个实例。 尝试制作两个嵌套类。看起来他们无论如何都不 需要 引用