как переопределить статическую переменную класса

Я использую библиотеку, в которой есть общедоступная статическая переменная с плавающей запятой. Я хочу знать, как ее переопределить. Думаю, этого не произойдет?

//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 {

}

Спасибо


person Rob    schedule 22.03.2011    source источник
comment
Меня смущает ваш код примера, так как он объявлен static, а не final. Почему бы просто не изменить значение?   -  person brian_d    schedule 22.03.2011
comment
Роб, измени свой вопрос, пожалуйста. Что окончательно, что статично   -  person lukastymo    schedule 22.03.2011
comment
извините, мои вопросы отстой. как я уверен, вы можете сказать, что я на самом деле не Java-программист. это совсем не финал. это мои глаза играют трюки.   -  person Rob    schedule 23.03.2011


Ответы (4)


Переменная speedThreashold в вашем примере не является окончательной и не является переменной экземпляра, и поэтому технически не может быть переопределена.

Что вы можете сделать, так это установить значение speedThreashold на любое значение, которое вы хотите, поскольку оно общедоступно.

Я думаю, что вы захотите сделать что-то вроде следующего:

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

  //... the rest of your program
}
person Mike Deck    schedule 22.03.2011
comment
действительно, мой вопрос был мусором, он не имеет ничего общего с финалом. это то, что мне нужно :) спасибо - person Rob; 23.03.2011

Вы не можете переопределить переменные-члены в Java. Вместо этого вы можете использовать что-то, называемое сокрытием поля. Взгляните на это .

Однако в вашем примере velocityThreashold не является окончательным, поэтому вы можете изменить его значение.

person brain    schedule 22.03.2011

Переопределить переменную? Если вы имеете в виду метод, то:

Вы не можете переопределить статический метод, потому что статические элементы не наследуются

person lukastymo    schedule 22.03.2011

Вы не можете, в этом смысл их окончательности.

Что касается вашего кода, у вас нет конечной переменной, поэтому вам просто нужно изменить значение и все.

person OscarRyz    schedule 22.03.2011