The full list of resolved issues in 1.8.0 is available here.
AspectJ has been updated to the latest available Eclipse Java compiler version that compiles Java8 code (the version available as a feature patch on top of Eclipse 4.3.2).
Here is a sample AspectJ8 program:
=== 8< ==== C.java ==== 8< ===
import java.util.Arrays;
interface I {
// Default method
default void foo() {
System.out.println("ABC");
}
}
public class C implements I{
public static void main(String[] args) {
new C().foo();
// Lambda
Runnable r = () -> { System.out.println("hello world!"); };
r.run();
// Used Java8 b97
Arrays.asList(MyClass.doSomething()).forEach((p) -> System.out.println(p));
}
}
aspect X {
before(): execution(* I.foo()) {
System.out.println("I.foo running");
}
before(): staticinitialization(!X) {
System.out.println("Clazz "+thisJoinPointStaticPart);
}
}
class Utils {
public static int compareByLength(String in, String out) {
return in.length() - out.length();
}
}
class MyClass {
public static String[] doSomething() {
String []args = new String[]{"4444","333","22","1"};
// Method reference
Arrays.sort(args,Utils::compareByLength);
return args;
}
}
=== 8< ==== C.java ==== 8< ===