簡體   English   中英

無法從 kotlin 外部繼承的 Java 類訪問成員

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM