.version 52 0 .source Example.java .class super public Example .super java/lang/Object .method synthetic public <init> : ()V .limit stack 1 .limit locals 1 aload_0 invokespecial java/lang/Object <init> ()V return .end method .method synthetic static public main : ([Ljava/lang/String;)V .limit stack 2 .limit locals 1 getstatic java/lang/System out Ljava/io/PrintStream; ldc 'Hello world' invokevirtual java/io/PrintStream println (Ljava/lang/String;)V return .end method
The synthetic attribute is normally applied to methods which do not appear in the source code. Its presence, however, is valid on any method.
JD-GUI 1.4.0 public class Example {}
There is no option to disable this behaviour in jd-gui.
Procyon 0.5.30 // // Decompiled by Procyon v0.5.30 // public class Example { }
You can decompile using --show-synthetic or -ss to avoid this in procyon.
CFR 0.103 /* * Decompiled with CFR 0_103. */ import java.io.PrintStream; public class Example { public static /* synthetic */ void main(String[] arrstring) { System.out.println("Hello world"); } }
Fernflower @810818e public class Example { // $FF: synthetic method public static void main(String[] var0) { System.out.println("Hello world"); } }