Mam trudności ze znalezieniem informacji o możliwości eliminacji kod javac
Addkod javac możliwości eliminacji
Czytałem, że jeśli masz coś podobnego Poniżej if
-statement zostaną wyeliminowane:
static final boolean DEBUG = false;
if (DEBUG) System.out.println("Hello World!"); // will be removed
Ale jak o tym, na przykład:
static final int VALUE = 3;
if (VALUE > 9) System.out.println("VALUE > 9 ???"); // will this be removed?
Lub jes s:
static final SomeEnum VALUE = SomeEnum.FOO;
if (VALUE==SomeEnum.BAR) System.out.println("Bar???"); // will this be removed?
Ponieważ jest to bardzo trudne/niemożliwe do analizy programu, aby znaleźć wszystkie martwe kod (prawdopodobnie podobny do problemu stopu), to sobie wyobrazić, że istnieją tylko kilka dobrze zdefiniowane konstrukcje (jak pierwszy przykład powyżej), który javac
rozpozna i usunie niezawodnie. Czy istnieje obszerna lista tych konstrukcji?
Czy próbowałeś go zobaczyć? 'javap -c' sprawi, że będzie to całkiem jasne ... –
@JonSkeet Jeszcze nie, ponieważ miałem nadzieję znaleźć listę tych konstrukcji, więc nie muszę ich wypróbowywać jeden po drugim. Poza tym prawdopodobnie nie będę w stanie wymyślić wszystkich możliwości ... Ale, na dwa powyższe przykłady, oczywiście, masz rację, mogę sprawdzić ... –
Dla rekordu pierwsze dwa są eliminowane trzeci nie jest. – assylias