
也就是说,我们可以通过配置该参数,扩大 Integer 缓存的范围。Java 虚拟机参数 -XX:+AggressiveOpts 也会将 IntegerCache.high 调整至 20000。
泛型与类型擦除
桥接方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
public class <T extends Number> {
public void add(T number) {
} } public class NumberS extends <Integer> {
public void add(Integer number) {
}
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
javap -v NumberS.class Classfile /D:/workspace/demo/se-demo/src/main/java/brige/NumberS.class Last modified 2019-3-26; size 550 bytes MD5 checksum 5434bc6cbc8277ec249d44c992fe26bc Compiled from "NumberS.java" public class brige.NumberS extends brige.NumberF<java.lang.Integer> minor version: 0 major version: 52 flags: ACC_PUBLIC, ACC_SUPER Constant pool: Integer;)V { public brige.NumberS(); descriptor: ()V flags: ACC_PUBLIC Code: stack=1, locals=1, args_size=1 0: aload_0 1: invokespecial t>":()V 4: return LineNumberTable: line 16: 0
public void add(java.lang.Integer); descriptor: (Ljava/lang/Integer;)V flags: ACC_PUBLIC Code: stack=0, locals=2, args_size=2 0: return LineNumberTable: line 21: 0 // 桥接方法 public void add(java.lang.Number); descriptor: (Ljava/lang/Number;)V flags: ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC Code: stack=2, locals=2, args_size=2 0: aload_0 1: aload_1 2: checkcast #2 // class java/lang/Integer 5: invokevirtual #3 // Method add:(Ljava/lang/Int eger;)V 8: return LineNumberTable: line 16: 0 } Signature: #18 // Lbrige/NumberF<Ljava/lang/Intege r;>; SourceFile: "NumberS.java"
|
近期评论