栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Eclipse错误?仅在默认情况下打开null

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Eclipse错误?仅在默认情况下打开null

这是一个错误。这是

switch
根据 Java语言规范,第三版 的声明的指定行为:

[JLS 14.11

switch
声明](http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.11)

SwitchStatement:    switch ( expression ) SwitchBlock

switch
执行该语句时,首先对
expression
进行评估。如果结果
expression
null
NullPointerException
则抛出a
,并且由于
switch
这个原因,整个语句突然完成。

显然,Eclipse中的错误与

default
大小写无关
enum

public class SwitchingonAnull {    public static void main(String[] args) {     java.math.RoundingMode x = null;        switch(x) {};        switch((Integer) null) {};        switch((Character) null) { default: System.out.println("I've got sunshine!");        }}}

上面的代码在Eclipse(至少是某些版本)上编译并运行“精细”。使用编译时,每个人都会

switch
抛出一个,这完全符合规范的要求。
NullPointerException``javac


原因

这是

javap -c SwitchingOnAnull
在Eclipse下编译时的:

Compiled from "SwitchingOnAnull.java"public class SwitchingonAnull extends java.lang.Object{public SwitchingonAnull();Code: 0: aload_0 1: invokespecial  #8; //Method java/lang/Object."<init>":()V 4: returnpublic static void main(java.lang.String[]);Code: 0: aconst_null 1: astore_1 2: getstatic     #16; //Field java/lang/System.out:Ljava/io/PrintStream; 5: ldc#22; //String I've got sunshine! 7: invokevirtual #24; //Method java/io/PrintStream.println:(Ljava/lang/String;)V10: return}

看来Eclipse编译器

switch
完全摆脱了整个构造。不幸的是,这种优化违反了语言规范。


官方话

该错误已归档并已分配修复。

奥利维尔·托曼(Olivier Thomann)2010-05-28 08:37:21

我们在优化上过于激进。

对于:

  switch((Integer) null) {};

我们

switch
至少应该评估表达式时才能优化整个语句。

我会看一看。

3.6.1的候选人。

也可以看看

  • 错误314830-打开
    null
    表达式并不总是抛出
    NullPointerException


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/596072.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号