所以我正在做这个模拟汽车乐器的练习。共有三类:FuelGauge
,Odometer
和CarInstrumentSimulator
(一种使用main方法的类)。前两个都有我定义的构造函数。但是,每当我在main
中键入以下内容时:
public static void main(String[] args) {
CarInstrumentSimulator carInstrumentSimulator = new CarInstrumentSimulator();
FuelGauge fuel = carInstrumentSimulator.new FuelGauge();
Odometer odometer = carInstrumentSimulator.new Odometer(0, fuel);
我总是得到一个CarInstrumentSimulator.FuelGauge无法解析为日食中的类型错误(与里程表相同),但是我从网站上获得的更正中获得了这一行代码,我从(https://www.leveluplunch.com/java/exercises/car-instrument-simulator/)获得了练习
我对Java和编码一般还是很陌生,所以我想知道:
1)这个语法是什么意思:
FuelGauge fuel = carInstrumentSimulator.new FuelGauge();
2)为什么这种语法有问题?
在此先感谢^^
最佳答案
我认为这是source中的错字。尝试以下方法:
FuelGauge fuel = new FuelGauge();
Odometer odometer = new Odometer(0, fuel);
这个问题没有明智的答案...
这个语法是什么意思:
FuelGauge fuel = carInstrumentSimulator.new FuelGauge();
...因为该行是乱码;)
在Java对象上有效的方法调用(例如
carInstrumentSimulator
)将需要点符号,方法名称以及左括号和右括号。 carInstrumentSimulator.doSomething()
,但是上面的代码没有括号,使用new
这个单词不是有效的Java方法名称(因为它是一个保留关键字),并且在new
之后是FuelGauge()
整个事情无法解释。有关Java方法构造here的更多详细信息。
如果
FuelGauge
在CarInstrumentSimulator
内部声明,则此语法将有效:new CarInstrumentSimulator.FuelGauge();
同样,如果
CarInstrumentSimulator
公开了FuelGauge
的创建者方法,则此语法将有效:carInstrumentSimulator.newFuelGauge();
但是此语法在任何情况下均无效:
carInstrumentSimulator.new FuelGauge();
。