Complete List of immutable JDK classes?

前端 未结 3 2020
北海茫月
北海茫月 2020-12-14 23:49

is there a list of de-facto immutable classes in the jdk?

technically Immutable classes include the obvious Integer, Double etc..

de-facto i

3条回答
  •  我在风中等你
    2020-12-15 00:45

    You can use MutabilityDetector and feed it JARs from the JDK to enumerate most immutable classes. It's "most" because it's so strict that even the tiny bit of state change in java.lang.String is enough to make it considered mutable, but the goal is to account for this by 1.0 release.

    You can download the latest JAR here: https://github.com/MutabilityDetector/MutabilityDetector/releases

    Here's an example of it's use. This is what I used to get most of the immutable JDK 1.7 classes on OSX:

    java -jar MutabilityDetector-0.9.5.jar -r IMMUTABLE -cp /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/rt.jar

    Here's the output (slightly cleaned up): https://gist.github.com/CalebFenton/85fc87edf64033afe110

    I needed to do this for Android framework classes. The tricky part was finding a JAR with Android classes, and not just stubs which is the one included in the SDK. The good people at Robolectric make one, which you can download here: http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22android-all%22

    You can see the list of immutable Android classes I use, which includes many JDK classes here: https://github.com/CalebFenton/simplify/blob/master/smalivm/src/main/resources/immutable_classes.cfg

提交回复
热议问题