From JDK12 it is not possible to drop 'final' modifier (original) (raw)
Enrico Olivelli eolivelli at gmail.com
Wed Nov 7 19:30:02 UTC 2018
- Previous message: From JDK12 it is not possible to drop 'final' modifier
- Next message: Method references in annotations
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Il mer 7 nov 2018, 19:57 Andrew Luo <andrewluotechnologies at outlook.com> ha scritto:
Also, you might want to take a look at JLS 13.4.9 "final Fields and Constants". Primitive static final constants can be folded at compile time, so even if you were able to change it at runtime, it wouldn't have any effect... Andrew, Thanks, but my case is about a field which needs an initialization. So that statement does not apply.
private static final int VAL = Integer.getInteger(sysprop)
Enrico
Thanks, > Andrew > -----Original Message----- From: core-libs-dev <core-libs-dev-bounces at openjdk.java.net> On Behalf Of Alan Bateman Sent: Wednesday, November 7, 2018 10:11 AM To: Enrico Olivelli <eolivelli at gmail.com>; core-libs-dev at openjdk.java.net Subject: Re: From JDK12 it is not possible to drop 'final' modifier > On 07/11/2018 16:42, Enrico Olivelli wrote: > Hi, > I am investigating this case about PowerMock, which is not able to > remove the 'final' modifier from a Field > https://github.com/powermock/powermock/issues/939 > > Is there any suggested alternate way to remove such modifier ? > > I understand clearly that it is against how the JVM works and I really > appreciate this "change", but this is blocking tests of several > projects. > > The only work-around I see is to not use "final" modifier for things > that aren't really "final", but for instance my case is that "in > production" I want the field to be treaded as "final" (in particular > "final static" initialized with System Properties) but in unit tests I > would like to be able to change the value without spawning a new JVM. > > I did not find any JIRA about this behavioral change, do you have any pointer ? > > If this is the direction (and I totally support it) I will be fine and > adapt to the new rules. > Right, there's no supported way to change static final fields. Have you looked into the java agent dropping the final modifier at class load time? > -Alan.
-- Enrico Olivelli
- Previous message: From JDK12 it is not possible to drop 'final' modifier
- Next message: Method references in annotations
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]