我对Kotlin还是很陌生,我试图将Java项目迁移到kotlin,但遇到了一个问题,即我无法从类中访问隐式继承的成员。
在Java中,我有一个名为Robot.java
的类,它是从TimedRobot.java
扩展而来的,在TimedRobot.java
内有一个静态成员,它是一种double类型
public class Robot extends TimedRobot {
}
TimedRobot.java
来自库:
public class TimedRobot extends IterativeRobotBase {
public static final double DEFAULT_PERIOD = 0.02;
private double m_period = DEFAULT_PERIOD;
...
}
在与Robot.java
相同的包中,我有一个名为RobotConstants.java
的类,其中包含一些数字。即使在我的机器人类中没有名为DEFAULT_PERIOD
的变量,我仍然可以像这样从外部调用它:
public class RobotConstants {
public static final int PERIOD_IN_MS = (int)(Robot.DEFAULT_PERIOD * 1000);
...
}
但是我无法在Kotlin中做到这一点。
我在科特林的机器人课:
class Robot : TimedRobot() {
}
我无法在kotlin的常量对象中获得默认期限,这给了我编译时错误。这是我正在尝试做的事情:
object RobotConstants {
const val PERIOD_Ms = (Robot.DEFAULT_PERIOD * 1000).toInt()
...
}
答案 0 :(得分:0)
您可以使用实际的TimedRobot.DEFAULT_PERIOD
常量,也可以通过伴随对象重新定义它:
class Robot : TimedRobot() {
companion object {
const val DEFAULT_PERIOD = TimedRobot.DEFAULT_PERIOD
}
}
另一种可能性是将这些值表示为顶级字段。
答案 1 :(得分:0)
如果它仍然像我一样出现错误,解决方案是将@JvmField 注释放在字段上