public final class java.util.StringJoiner
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: java.util.StringJoiner
super_class: java.lang.Object
{
private final java.lang.String prefix;
descriptor: Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.lang.String delimiter;
descriptor: Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.lang.String suffix;
descriptor: Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.lang.String[] elts;
descriptor: [Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private int size;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int len;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private java.lang.String emptyValue;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
public void <init>(java.lang.CharSequence);
descriptor: (Ljava/lang/CharSequence;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
ldc ""
ldc ""
invokespecial java.util.StringJoiner.<init>:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/util/StringJoiner;
0 2 1 delimiter Ljava/lang/CharSequence;
MethodParameters:
Name Flags
delimiter
public void <init>(java.lang.CharSequence, java.lang.CharSequence, java.lang.CharSequence);
descriptor: (Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 2
ldc "The prefix must not be null"
invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
pop
2: aload 1
ldc "The delimiter must not be null"
invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
pop
3: aload 3
ldc "The suffix must not be null"
invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
pop
4: aload 0
aload 2
invokeinterface java.lang.CharSequence.toString:()Ljava/lang/String;
putfield java.util.StringJoiner.prefix:Ljava/lang/String;
5: aload 0
aload 1
invokeinterface java.lang.CharSequence.toString:()Ljava/lang/String;
putfield java.util.StringJoiner.delimiter:Ljava/lang/String;
6: aload 0
aload 3
invokeinterface java.lang.CharSequence.toString:()Ljava/lang/String;
putfield java.util.StringJoiner.suffix:Ljava/lang/String;
7: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Ljava/util/StringJoiner;
0 8 1 delimiter Ljava/lang/CharSequence;
0 8 2 prefix Ljava/lang/CharSequence;
0 8 3 suffix Ljava/lang/CharSequence;
MethodParameters:
Name Flags
delimiter
prefix
suffix
public java.util.StringJoiner setEmptyValue(java.lang.CharSequence);
descriptor: (Ljava/lang/CharSequence;)Ljava/util/StringJoiner;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
1: ldc "The empty value must not be null"
2: invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
checkcast java.lang.CharSequence
3: invokeinterface java.lang.CharSequence.toString:()Ljava/lang/String;
4: putfield java.util.StringJoiner.emptyValue:Ljava/lang/String;
5: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljava/util/StringJoiner;
0 6 1 emptyValue Ljava/lang/CharSequence;
MethodParameters:
Name Flags
emptyValue
private static int getChars(java.lang.String, char[], int);
descriptor: (Ljava/lang/String;[CI)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual java.lang.String.length:()I
istore 3
start local 3 1: aload 0
iconst_0
iload 3
aload 1
iload 2
invokevirtual java.lang.String.getChars:(II[CI)V
2: iload 3
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 s Ljava/lang/String;
0 3 1 chars [C
0 3 2 start I
1 3 3 len I
MethodParameters:
Name Flags
s
chars
start
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=8, args_size=1
start local 0 0: aload 0
getfield java.util.StringJoiner.elts:[Ljava/lang/String;
astore 1
start local 1 1: aload 1
ifnonnull 3
aload 0
getfield java.util.StringJoiner.emptyValue:Ljava/lang/String;
ifnull 3
2: aload 0
getfield java.util.StringJoiner.emptyValue:Ljava/lang/String;
areturn
3: StackMap locals: java.lang.String[]
StackMap stack:
aload 0
getfield java.util.StringJoiner.size:I
istore 2
start local 2 4: aload 0
getfield java.util.StringJoiner.prefix:Ljava/lang/String;
invokevirtual java.lang.String.length:()I
aload 0
getfield java.util.StringJoiner.suffix:Ljava/lang/String;
invokevirtual java.lang.String.length:()I
iadd
istore 3
start local 3 5: iload 3
ifne 10
6: aload 0
invokevirtual java.util.StringJoiner.compactElts:()V
7: iload 2
ifne 8
ldc ""
goto 9
StackMap locals: int int
StackMap stack:
8: aload 1
iconst_0
aaload
StackMap locals:
StackMap stack: java.lang.String
9: areturn
10: StackMap locals:
StackMap stack:
aload 0
getfield java.util.StringJoiner.delimiter:Ljava/lang/String;
astore 4
start local 4 11: aload 0
getfield java.util.StringJoiner.len:I
iload 3
iadd
newarray 5
astore 5
start local 5 12: aload 0
getfield java.util.StringJoiner.prefix:Ljava/lang/String;
aload 5
iconst_0
invokestatic java.util.StringJoiner.getChars:(Ljava/lang/String;[CI)I
istore 6
start local 6 13: iload 2
ifle 21
14: iload 6
aload 1
iconst_0
aaload
aload 5
iload 6
invokestatic java.util.StringJoiner.getChars:(Ljava/lang/String;[CI)I
iadd
istore 6
15: iconst_1
istore 7
start local 7 16: goto 20
17: StackMap locals: java.util.StringJoiner java.lang.String[] int int java.lang.String char[] int int
StackMap stack:
iload 6
aload 4
aload 5
iload 6
invokestatic java.util.StringJoiner.getChars:(Ljava/lang/String;[CI)I
iadd
istore 6
18: iload 6
aload 1
iload 7
aaload
aload 5
iload 6
invokestatic java.util.StringJoiner.getChars:(Ljava/lang/String;[CI)I
iadd
istore 6
19: iinc 7 1
StackMap locals:
StackMap stack:
20: iload 7
iload 2
if_icmplt 17
end local 7 21: StackMap locals:
StackMap stack:
iload 6
aload 0
getfield java.util.StringJoiner.suffix:Ljava/lang/String;
aload 5
iload 6
invokestatic java.util.StringJoiner.getChars:(Ljava/lang/String;[CI)I
iadd
istore 6
22: new java.lang.String
dup
aload 5
invokespecial java.lang.String.<init>:([C)V
areturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Ljava/util/StringJoiner;
1 23 1 elts [Ljava/lang/String;
4 23 2 size I
5 23 3 addLen I
11 23 4 delimiter Ljava/lang/String;
12 23 5 chars [C
13 23 6 k I
16 21 7 i I
public java.util.StringJoiner add(java.lang.CharSequence);
descriptor: (Ljava/lang/CharSequence;)Ljava/util/StringJoiner;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
astore 2
start local 2 1: aload 0
getfield java.util.StringJoiner.elts:[Ljava/lang/String;
ifnonnull 4
2: aload 0
bipush 8
anewarray java.lang.String
putfield java.util.StringJoiner.elts:[Ljava/lang/String;
3: goto 7
4: StackMap locals: java.lang.String
StackMap stack:
aload 0
getfield java.util.StringJoiner.size:I
aload 0
getfield java.util.StringJoiner.elts:[Ljava/lang/String;
arraylength
if_icmpne 6
5: aload 0
aload 0
getfield java.util.StringJoiner.elts:[Ljava/lang/String;
iconst_2
aload 0
getfield java.util.StringJoiner.size:I
imul
invokestatic java.util.Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
checkcast java.lang.String[]
putfield java.util.StringJoiner.elts:[Ljava/lang/String;
6: StackMap locals:
StackMap stack:
aload 0
dup
getfield java.util.StringJoiner.len:I
aload 0
getfield java.util.StringJoiner.delimiter:Ljava/lang/String;
invokevirtual java.lang.String.length:()I
iadd
putfield java.util.StringJoiner.len:I
7: StackMap locals:
StackMap stack:
aload 0
dup
getfield java.util.StringJoiner.len:I
aload 2
invokevirtual java.lang.String.length:()I
iadd
putfield java.util.StringJoiner.len:I
8: aload 0
getfield java.util.StringJoiner.elts:[Ljava/lang/String;
aload 0
dup
getfield java.util.StringJoiner.size:I
dup_x1
iconst_1
iadd
putfield java.util.StringJoiner.size:I
aload 2
aastore
9: aload 0
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Ljava/util/StringJoiner;
0 10 1 newElement Ljava/lang/CharSequence;
1 10 2 elt Ljava/lang/String;
MethodParameters:
Name Flags
newElement
public java.util.StringJoiner merge(java.util.StringJoiner);
descriptor: (Ljava/util/StringJoiner;)Ljava/util/StringJoiner;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
1: aload 1
getfield java.util.StringJoiner.elts:[Ljava/lang/String;
ifnonnull 3
2: aload 0
areturn
3: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.util.StringJoiner.compactElts:()V
4: aload 0
aload 1
getfield java.util.StringJoiner.elts:[Ljava/lang/String;
iconst_0
aaload
invokevirtual java.util.StringJoiner.add:(Ljava/lang/CharSequence;)Ljava/util/StringJoiner;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/util/StringJoiner;
0 5 1 other Ljava/util/StringJoiner;
MethodParameters:
Name Flags
other
private void compactElts();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=4, args_size=1
start local 0 0: aload 0
getfield java.util.StringJoiner.size:I
iconst_1
if_icmple 11
1: aload 0
getfield java.util.StringJoiner.len:I
newarray 5
astore 1
start local 1 2: iconst_1
istore 2
start local 2 3: aload 0
getfield java.util.StringJoiner.elts:[Ljava/lang/String;
iconst_0
aaload
aload 1
iconst_0
invokestatic java.util.StringJoiner.getChars:(Ljava/lang/String;[CI)I
istore 3
start local 3 4: StackMap locals: char[] int int
StackMap stack:
iload 3
aload 0
getfield java.util.StringJoiner.delimiter:Ljava/lang/String;
aload 1
iload 3
invokestatic java.util.StringJoiner.getChars:(Ljava/lang/String;[CI)I
iadd
istore 3
5: iload 3
aload 0
getfield java.util.StringJoiner.elts:[Ljava/lang/String;
iload 2
aaload
aload 1
iload 3
invokestatic java.util.StringJoiner.getChars:(Ljava/lang/String;[CI)I
iadd
istore 3
6: aload 0
getfield java.util.StringJoiner.elts:[Ljava/lang/String;
iload 2
aconst_null
aastore
7: iinc 2 1
iload 2
aload 0
getfield java.util.StringJoiner.size:I
8: if_icmplt 4
9: aload 0
iconst_1
putfield java.util.StringJoiner.size:I
10: aload 0
getfield java.util.StringJoiner.elts:[Ljava/lang/String;
iconst_0
new java.lang.String
dup
aload 1
invokespecial java.lang.String.<init>:([C)V
aastore
end local 3 end local 2 end local 1 11: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Ljava/util/StringJoiner;
2 11 1 chars [C
3 11 2 i I
4 11 3 k I
public int length();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.StringJoiner.size:I
ifne 1
aload 0
getfield java.util.StringJoiner.emptyValue:Ljava/lang/String;
ifnull 1
aload 0
getfield java.util.StringJoiner.emptyValue:Ljava/lang/String;
invokevirtual java.lang.String.length:()I
goto 2
1: StackMap locals:
StackMap stack:
aload 0
getfield java.util.StringJoiner.len:I
aload 0
getfield java.util.StringJoiner.prefix:Ljava/lang/String;
invokevirtual java.lang.String.length:()I
iadd
aload 0
getfield java.util.StringJoiner.suffix:Ljava/lang/String;
invokevirtual java.lang.String.length:()I
iadd
2: StackMap locals:
StackMap stack: int
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/util/StringJoiner;
}
SourceFile: "StringJoiner.java"