我有以下课
public class zoneddatetimeToInstant { public static void main(final String[] args) throws NoSuchMethodException { assert Chronozoneddatetime.class.isAssignableFrom(zoneddatetime.class); final Method toInstant = Chronozoneddatetime.class.getmethod("toInstant"); final zoneddatetime Now = zoneddatetime.Now(); final Instant instant = Now.toInstant(); System.out.println(instant); } }
它只是编译罚款.
& javac zoneddatetimeToInstant.java
并且它与-source 1.7失败.
& javac -source 1.7 zoneddatetimeToInstant.java zoneddatetimeToInstant.java:10: error: cannot find symbol final Instant instant = Now.toInstant(); ^ symbol: method toInstant() location: variable Now of type zoneddatetime 1 error 1 warning
这是正常吗?看来javac不了解除1.8以外的-source的JDK类.
根据javac,javac仍然支持各种-source版本选项,就像以前的版本一样.
补充
我已经知道JSR 310: Date and Time API仅在Java 8中可用.与javac有什么关系?
$cat Java8.java public class Java8 { public void print(java.io.PrintStream out) { out.printf("hello world\n"); } } $javac Java8.java $cat Java7.java public class Java7 { public static void main(final String[] args) { new Java8().print(System.out); } } $javac -source 1.7 -target 1.7 Java7.java warning: [options] bootstrap class path not set in conjunction with -source 1.7 1 warning $java Java7 hello world
结论
正如@ Eng.Fouad所说.问题是该方法是在接口中定义的默认方法. javac似乎抓住了这一点.
$cat Java8i.java public interface Java8i { default void print(java.io.PrintStream out) { out.printf("hello world\n"); } } $javac Java8i.java $cat Java8c.java public class Java8c implements Java8i { } $javac Java8c.java $cat Java7i.java public class Java7i { public static void main(final String[] args) { new Java8c().print(System.out); } } $javac -source 1.7 -target 1.7 Java7i.java warning: [options] bootstrap class path not set in conjunction with -source 1.7 Java7i.java:3: error: cannot find symbol new Java8c().print(System.out); ^ symbol: method print(PrintStream) location: class Java8c 1 error 1 warning
javac应该更有帮助地告诉我.
解决方法
原文地址:https://www.jb51.cc/java/122698.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。