2011-03-22 111 views
-4

我正在使用它有一個公共靜態浮點變量的庫我想知道如何覆蓋它 我想這不會發生?如何覆蓋類的靜態變量

//Settings.java 
package org.jbox2d.common; 

public class Settings { 
    public static float velocityThreashold = 1.0f; 
} 

//MyClass.class 
package org.jbox2d.common; 

import com.otherlibrary 
public class MyClass { 

} 

感謝

+3

我對你的示例代碼感到困惑,因爲它被聲明爲「static」而不是「final」。爲什麼不改變價值? – 2011-03-22 20:03:07

+0

Rob請修改您的問題。什麼是最終的,什麼是靜態的 – smas 2011-03-22 20:10:16

+0

對不起,我的問題很糟糕。因爲我確定你可以告訴我不是一個真正的Java程序員。它根本不是最終的。我的眼睛在玩弄技巧。 – Rob 2011-03-22 21:21:37

回答

0

您示例中的velocityThreashold變量不是最終的,也不是實例變量,因此在技術上無法被覆蓋。

你可以做的是將velocityThreashold的值設置爲你想要的任何值,因爲它是公開的。

我想你會什麼想要做的是類似以下內容:

public static void main(String[] args) { 
    org.jbox2d.common.Settings.velocityThreashold = 2.0f; 

    //... the rest of your program 
} 
+0

事實上,我的問題是垃圾,它與最終沒有任何關係。這是我需要:)謝謝 – Rob 2011-03-22 21:23:24

0

覆蓋變量?如果你的意思是方法,那麼:

因爲靜態元素是不能繼承

1

不能覆蓋的成員變量在Java中你不能覆蓋靜態方法。您可以使用稱爲字段隱藏的東西來代替。看看this

但是在您的示例中,velocityThreashold不是最終的,因此您可以更改其值。

0

你不能,那是他們最終被的地步。

至於你的代碼,你沒有最終的變量,所以你只需要改變值,就是這樣。