Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package test;
- import java.util.Comparator;
- import java.io.Serializable;
- public class StringComparator implements Comparator<String> {
- @Override
- public int compare(String s1, String s2) {
- return Integer.compare(s1.charAt(0), s2.charAt(0));
- }
- }
- public class Test {
- public static final Comparator<String> SOME_COMPARATOR = new StringComparator();
- public static void main(String[] args) {
- Comparator<String> methodReference = (Comparator<String> & Serializable) SOME_COMPARATOR::compare;
- Comparator<String> lambda = (Comparator<String> & Serializable) (a,b) -> SOME_COMPARATOR.compare(a,b);
- }
- }
- /******************************************************
- Decompiled with javap -p -c
- *******************************************************
- Compiled from "Test.java"
- public class test.Test {
- public static final java.util.Comparator<java.lang.String> SOME_COMPARATOR;
- public test.Test();
- Code:
- 0: aload_0
- 1: invokespecial #1 // Method java/lang/Object."<init>":()V
- 4: return
- public static void main(java.lang.String[]);
- Code:
- 0: getstatic #2 // Field SOME_COMPARATOR:Ljava/util/Comparator;
- 3: dup
- 4: invokevirtual #3 // Method java/lang/Object.getClass:()Ljava/lang/Class;
- 7: pop
- 8: invokedynamic #4, 0 // InvokeDynamic #0:compare:(Ljava/util/Comparator;)Ljava/util/Comparator;
- 13: checkcast #5 // class java/io/Serializable
- 16: checkcast #6 // class java/util/Comparator
- 19: astore_1
- 20: invokedynamic #7, 0 // InvokeDynamic #1:compare:()Ljava/util/Comparator;
- 25: checkcast #5 // class java/io/Serializable
- 28: checkcast #6 // class java/util/Comparator
- 31: astore_2
- 32: return
- private static java.lang.Object $deserializeLambda$(java.lang.invoke.SerializedLambda);
- Code:
- 0: aload_0
- 1: invokevirtual #8 // Method java/lang/invoke/SerializedLambda.getImplMethodName:()Ljava/lang/String;
- 4: astore_1
- 5: iconst_m1
- 6: istore_2
- 7: aload_1
- 8: invokevirtual #9 // Method java/lang/String.hashCode:()I
- 11: lookupswitch { // 2
- 950484197: 36
- 1200933166: 50
- default: 61
- }
- 36: aload_1
- 37: ldc #10 // String compare
- 39: invokevirtual #11 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
- 42: ifeq 61
- 45: iconst_0
- 46: istore_2
- 47: goto 61
- 50: aload_1
- 51: ldc #12 // String lambda$main$62cfd7bc$1
- 53: invokevirtual #11 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
- 56: ifeq 61
- 59: iconst_1
- 60: istore_2
- 61: iload_2
- 62: lookupswitch { // 2
- 0: 88
- 1: 171
- default: 246
- }
- 88: aload_0
- 89: invokevirtual #13 // Method java/lang/invoke/SerializedLambda.getImplMethodKind:()I
- 92: bipush 9
- 94: if_icmpne 246
- 97: aload_0
- 98: invokevirtual #14 // Method java/lang/invoke/SerializedLambda.getFunctionalInterfaceClass:()Ljava/lang/String;
- 101: ldc #15 // String java/util/Comparator
- 103: invokevirtual #16 // Method java/lang/Object.equals:(Ljava/lang/Object;)Z
- 106: ifeq 246
- 109: aload_0
- 110: invokevirtual #17 // Method java/lang/invoke/SerializedLambda.getFunctionalInterfaceMethodName:()Ljava/lang/String;
- 113: ldc #10 // String compare
- 115: invokevirtual #16 // Method java/lang/Object.equals:(Ljava/lang/Object;)Z
- 118: ifeq 246
- 121: aload_0
- 122: invokevirtual #18 // Method java/lang/invoke/SerializedLambda.getFunctionalInterfaceMethodSignature:()Ljava/lang/String;
- 125: ldc #19 // String (Ljava/lang/Object;Ljava/lang/Object;)I
- 127: invokevirtual #16 // Method java/lang/Object.equals:(Ljava/lang/Object;)Z
- 130: ifeq 246
- 133: aload_0
- 134: invokevirtual #20 // Method java/lang/invoke/SerializedLambda.getImplClass:()Ljava/lang/String;
- 137: ldc #15 // String java/util/Comparator
- 139: invokevirtual #16 // Method java/lang/Object.equals:(Ljava/lang/Object;)Z
- 142: ifeq 246
- 145: aload_0
- 146: invokevirtual #21 // Method java/lang/invoke/SerializedLambda.getImplMethodSignature:()Ljava/lang/String;
- 149: ldc #19 // String (Ljava/lang/Object;Ljava/lang/Object;)I
- 151: invokevirtual #16 // Method java/lang/Object.equals:(Ljava/lang/Object;)Z
- 154: ifeq 246
- 157: aload_0
- 158: iconst_0
- 159: invokevirtual #22 // Method java/lang/invoke/SerializedLambda.getCapturedArg:(I)Ljava/lang/Object;
- 162: checkcast #6 // class java/util/Comparator
- 165: invokedynamic #4, 0 // InvokeDynamic #0:compare:(Ljava/util/Comparator;)Ljava/util/Comparator;
- 170: areturn
- 171: aload_0
- 172: invokevirtual #13 // Method java/lang/invoke/SerializedLambda.getImplMethodKind:()I
- 175: bipush 6
- 177: if_icmpne 246
- 180: aload_0
- 181: invokevirtual #14 // Method java/lang/invoke/SerializedLambda.getFunctionalInterfaceClass:()Ljava/lang/String;
- 184: ldc #15 // String java/util/Comparator
- 186: invokevirtual #16 // Method java/lang/Object.equals:(Ljava/lang/Object;)Z
- 189: ifeq 246
- 192: aload_0
- 193: invokevirtual #17 // Method java/lang/invoke/SerializedLambda.getFunctionalInterfaceMethodName:()Ljava/lang/String;
- 196: ldc #10 // String compare
- 198: invokevirtual #16 // Method java/lang/Object.equals:(Ljava/lang/Object;)Z
- 201: ifeq 246
- 204: aload_0
- 205: invokevirtual #18 // Method java/lang/invoke/SerializedLambda.getFunctionalInterfaceMethodSignature:()Ljava/lang/String;
- 208: ldc #19 // String (Ljava/lang/Object;Ljava/lang/Object;)I
- 210: invokevirtual #16 // Method java/lang/Object.equals:(Ljava/lang/Object;)Z
- 213: ifeq 246
- 216: aload_0
- 217: invokevirtual #20 // Method java/lang/invoke/SerializedLambda.getImplClass:()Ljava/lang/String;
- 220: ldc #23 // String test/Test
- 222: invokevirtual #16 // Method java/lang/Object.equals:(Ljava/lang/Object;)Z
- 225: ifeq 246
- 228: aload_0
- 229: invokevirtual #21 // Method java/lang/invoke/SerializedLambda.getImplMethodSignature:()Ljava/lang/String;
- 232: ldc #24 // String (Ljava/lang/String;Ljava/lang/String;)I
- 234: invokevirtual #16 // Method java/lang/Object.equals:(Ljava/lang/Object;)Z
- 237: ifeq 246
- 240: invokedynamic #7, 0 // InvokeDynamic #1:compare:()Ljava/util/Comparator;
- 245: areturn
- 246: new #25 // class java/lang/IllegalArgumentException
- 249: dup
- 250: ldc #26 // String Invalid lambda deserialization
- 252: invokespecial #27 // Method java/lang/IllegalArgumentException."<init>":(Ljava/lang/String;)V
- 255: athrow
- private static int lambda$main$62cfd7bc$1(java.lang.String, java.lang.String);
- Code:
- 0: getstatic #2 // Field SOME_COMPARATOR:Ljava/util/Comparator;
- 3: aload_0
- 4: aload_1
- 5: invokeinterface #28, 3 // InterfaceMethod java/util/Comparator.compare:(Ljava/lang/Object;Ljava/lang/Object;)I
- 10: ireturn
- static {};
- Code:
- 0: new #29 // class test/StringComparator
- 3: dup
- 4: invokespecial #30 // Method test/StringComparator."<init>":()V
- 7: putstatic #2 // Field SOME_COMPARATOR:Ljava/util/Comparator;
- 10: return
- }
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement