不可变的JDK类的完整列表?


问题内容

jdk中是否有 事实上的 不可变类的列表?

从技术上讲,不可变类包括明显的Integer,Double等。

事实不可变将包含例如java.lang.String-从技术上讲它可能是可变的,但事实并非如此。

另外,是否存在不可变的接口/抽象类(如javadoc中所述)?

如果您不能提供完整的列表,那么如果您知道一堆在其javadoc中声明不变性的类,我将很高兴。


问题答案:

我尝试尽我所能来编译列表:

  1. java.lang.String基本类型的包装器类:
  2. java.lang.Integer
  3. java.lang.Byte
  4. java.lang.Character
  5. java.lang.Short
  6. java.lang.Boolean
  7. java.lang.Long
  8. java.lang.Double
  9. java.lang.Float
  10. java.lang.StackTraceElement(用于构建异常stacktraces)
  11. 大多数枚举类
  12. java.math.BigInteger
  13. java.math.BigDecimal
  14. java.io.File
  15. java.awt.Font
  16. java.awt.BasicStroke
  17. java.awt.Color
  18. java.awt.GradientPaint,
  19. java.awt.LinearGradientPaint
  20. java.awt.RadialGradientPaint,
  21. java.awt.Cursor
  22. java.util.Locale
  23. java.util.UUID
  24. java.util.Collections
  25. java.net.URL
  26. java.net.URI
  27. java.net.Inet4Address
  28. java.net.Inet6Address
  29. java.net.InetSocketAddress
  30. java.security.Permission的大多数子类