[英]Unable to access member from inherited java class outside in kotlin
我對 Kotlin 非常陌生,我試圖將我的 Java 項目遷移到 kotlin,但我遇到了一個問題,即我無法從我的類中訪問隱式繼承的成員。
在 java 中,我有一個名為Robot.java
的類,它從TimedRobot.java
擴展而來,在TimedRobot.java
有一個靜態成員,它是一個雙類型
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
的類,它包含一些數字。 即使我的 Robot 類中沒有名為DEFAULT_PERIOD
變量,我仍然可以像這樣從外部調用它:
public class RobotConstants {
public static final int PERIOD_IN_MS = (int)(Robot.DEFAULT_PERIOD * 1000);
...
}
但是我無法在 kotlin 中做到這一點。
我在 kotlin 中的機器人課程:
class Robot : TimedRobot() {
}
而且我無法在 kotlin 的常量對象中獲得默認時間段,它給了我一個編譯時錯誤。 這是我想要做的:
object RobotConstants {
const val PERIOD_Ms = (Robot.DEFAULT_PERIOD * 1000).toInt()
...
}
您可以使用實際的TimedRobot.DEFAULT_PERIOD
常量或通過伴隨對象重新定義它:
class Robot : TimedRobot() {
companion object {
const val DEFAULT_PERIOD = TimedRobot.DEFAULT_PERIOD
}
}
另一種可能性是將這些值表示為頂級字段。
如果它仍然是像我一樣的錯誤,解決方案是將 @JvmField 注釋放在字段上
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.