Възможно ли е да добавите модификатора volatile към поле, което е лично и статично?
Примерен код
// I don't know when test is initalized
public class Test {
private static String secretString;
public Test() {
secretString = "random";
}
}
public class ReflectionTest extends Thread {
public void run() {
Class<?> testClass = Class.forName("Test");
Field testField = testClass.getDeclaredField("secretString");
while (testField.get(null) == null) {
// Sleep, i don't know when test is initalized
// When it'is i need the String value
// But this loop never end.
}
}
}
Мисля, че ако задам полето volatile, цикълът завършва без никакъв проблем
private static volatile String secretString
? Да, това е възможно. Ако нямате предвид това, тогава въпросът ви е подвеждащ и неточен. - person Marko Topolnik   schedule 19.12.2014private static volatile String secretString
. Опитахте ли го вече? - person Marko Topolnik   schedule 19.12.2014private static volatile
. Вашият отговор беше да, искам това, вместо да посочвам коя от двете опции искате. Вашият коментар по-горе за пореден път не уточнява това, въпреки че вече е станало полуясно. Искате да добавите модификатора чрез отражение по време на изпълнение. Не можете, отражението не е API, който променя класовете. - person Marko Topolnik   schedule 19.12.2014