Комментарии 12
Вах, круто. Надо испытать на dalvik vm — будет ли работать… Очень вкусно выглядит.
Ну если оно шаманит с байткодом — то работать скорее всего не будет. Но проверить все же надо. Может манипуляции с байткодом выполняются на стороне JVM, до конвертации в байткод dalvik.
Да, там модифицируется немного байткод и добавляется пара классов, результат проверки чуть ниже.
Виии, работает!
public class Test {
	public static void main(String[] args) {
		System.out.println("=== Runnable test on Dalvik VM ===");
		Runnable r1 = new Runnable() {
			@Override
			public void run() {
				System.out.println("First runnable");
			}
		};
		Runnable r2 = () -> { System.out.println("Second runnable"); };
		
		r1.run(); r2.run();
	}
}

javac Test.java
java -Dretrolambda.inputDir=. -Dretrolambda.classpath=. -Dretrolambda.bytecodeVersion=50 -javaagent:retrolambda.jar -jar retrolambda.jar
zip package.jar *.class
java -jar /opt/android-sdk/build-tools/17.0.0/lib/dx.jar --dex --output=package-dx.jar package.jar
adb push package-dx.jar /sdcard/package-dx.jar
adb shell
su -c ash
dalvikvm -classpath /sdcard/package-dx.jar Test

Странное желание использовать стабильный JRE и нестабильную библиотеку. Lambda до сих пор в бете.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.