I use JAD to decompile Java .class files.
It works fine for this program here:
class HelloWorldPlain {
public static void main(String[] paramArrayOfString) {
System.out.println("Hello, World!");
}
}
Compiles nicely, runs nicely, decompiles nicely:
$ javac HelloWorldPlain.java && java HelloWorldPlain
Hello, World!
✓
$ jad -p HelloWorldPlain.class
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3)
// Source File Name: HelloWorldPlain.java
import java.io.PrintStream;
class HelloWorldPlain
{
HelloWorldPlain()
{
}
public static void main(String args[])
{
System.out.println("Hello, World!");
}
}
✓
But it fails for this program here:
class HelloWorldLambda {
public static void main(String[] paramArrayOfString) {
System.out.println("Hello, World!");
StringFunction stringFunction = paramString -> "Hello, " + paramString + "!";
printwithlambda("Lambda functions", stringFunction);
}
public static void printwithlambda(String paramString, StringFunction paramStringFunction) {
String str = paramStringFunction.run(paramString);
System.out.println(str);
}
}
Compiles nicely, runs nicely, does NOT decompile:
$ javac HelloWorldLambda.java && java HelloWorldLambda
Hello, World!
Hello, Lambda functions!
✓
$ jad -p HelloWorldLambda.class
JavaClassFileParseException: Invalid tag value 0x12
✗