| // No initializers for this class because the fields/properties are initialized to defaults. |
| class RedundantInitializersToDefault { |
| companion object { |
| // Constants |
| const val constInt: Int = 0 |
| const val constByte: Byte = 0 |
| const val constLong: Long = 0L |
| const val constShort: Short = 0 |
| const val constDouble: Double = 0.0 |
| const val constFloat: Float = 0.0f |
| const val constBoolean: Boolean = false |
| const val constChar: Char = '\u0000' |
| } |
| |
| // Properties |
| |
| val myIntPropFromConst: Int = constInt |
| val myBytePropFromConst: Byte = constByte |
| val myLongPropFromConst: Long = constLong |
| val myShortPropFromConst: Short = constShort |
| val myDoublePropFromConst: Double = constDouble |
| val myFloatPropFromConst: Float = constFloat |
| val myBooleanPropFromConst: Boolean = constBoolean |
| val myCharPropFromConst: Char = constChar |
| |
| val myIntProp: Int = 0 |
| val myByteProp: Byte = 0 |
| val myLongProp: Long = 0L |
| val myShortProp: Short = 0 |
| val myDoubleProp: Double = 0.0 |
| val myFloatProp: Float = 0.0f |
| val myBooleanProp: Boolean = false |
| val myCharProp: Char = '\u0000' |
| |
| val myStringProp: String? = null |
| val myAnyProp: Any? = null |
| val myObjectProp: java.lang.Object? = null |
| val myIntegerProp: java.lang.Integer? = null |
| |
| // Fields |
| |
| @JvmField |
| val myIntFieldFromConst: Int = constInt |
| @JvmField |
| val myByteFieldFromConst: Byte = constByte |
| @JvmField |
| val myLongFieldFromConst: Long = constLong |
| @JvmField |
| val myShortFieldFromConst: Short = constShort |
| @JvmField |
| val myDoubleFieldFromConst: Double = constDouble |
| @JvmField |
| val myFloatFieldFromConst: Float = constFloat |
| @JvmField |
| val myBooleanFieldFromConst: Boolean = constBoolean |
| @JvmField |
| val myCharFieldFromConst: Char = constChar |
| |
| @JvmField |
| val myIntField: Int = 0 |
| @JvmField |
| val myByteField: Byte = 0 |
| @JvmField |
| val myLongField: Long = 0L |
| @JvmField |
| val myShortField: Short = 0 |
| @JvmField |
| val myDoubleField: Double = 0.0 |
| @JvmField |
| val myFloatField: Float = 0.0f |
| @JvmField |
| val myBooleanField: Boolean = false |
| @JvmField |
| val myCharField: Char = '\u0000' |
| |
| @JvmField |
| val myStringField: String? = null |
| @JvmField |
| val myAnyField: Any? = null |
| @JvmField |
| val myObjectField: java.lang.Object? = null |
| @JvmField |
| val myIntegerField: java.lang.Integer? = null |
| } |
| |
| class NonRedundantInitializers { |
| // NOT redundant because the JVM's default values for floating-point types are positive 0.0. |
| // See: https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.3 |
| val myDouble: Double = -0.0 |
| val myFloat: Float = -0.0f |
| } |
| |
| // There is 1 PUTSTATIC for the companion object instance. |
| |
| // 0 PUTFIELD RedundantInitializersToDefault |
| // 2 PUTFIELD NonRedundantInitializers |
| // 1 PUTSTATIC |