源碼:
public class TestSource { public static void main(String[] args) { List<String> stringList = Arrays.stream(new String[]{"hello", "hi", "how are you", "what?", "hi"}) .distinct() .filter(word -> word.startsWith("h")) .sorted(Comparator.reverseOrder()) .collect(Collectors.toList()); System.out.println(stringList); } }
-source:
用於指定編譯源碼時使用的JDK版本,例如:javac -source 1.7 TestSource.java 指定使用JDK1.4編譯TestSource.java,
但是TestSource.java中使用了lamba表達式,因此編譯報錯,需要指定JDK版本為1.8;
-target:
用於指定生成的字節碼文件要運行在哪個JDK版本,如指定target版本為1.8,則運行字節碼文件的JDK版本必須大於等於1.8
編譯時同時使用:
運行使用的JDK版本必須大於等於編譯使用的JDK版本,即-target指定的版本必須大於等於-source,否則編譯會有如下錯誤:
javac: 源發行版 1.8 需要目標發行版 1.8