java语法及运行时错误记录

enum相关

an enum switch case label must be the unqualified name of an enumeration constant
private void Test(ColorType type){  
       switch (type){  
           case ColorType.GREEN:  
               break;  
           case ColorType.RED:  
               break;  
           case ColorType.ORANGE:  
               break;   
           default:  
               break;
      }  
}

解决

case语句中只能写枚举类定义的枚举值, 前面不能带类名限定, 在switch中已经确定了枚举的类型.
如果有两个枚举中都有同一个变量(比如GREEN)的话, 则无法确定判断的先后顺序.

private void Test(ColorType type){  
       switch (type){  
           case GREEN:  
               break;  
           case RED:  
               break;  
           case ORANGE:  
               break;   
           default:  
               break;
      }  
}
constant expression required
private void Test(int type){  
       switch (type){  
           case ColorType.GREEN.getCode():  
               break;  
           case ColorType.RED.getCode():  
               break;  
           case ColorType.ORANGE.getCode():  
               break;   
           default:  
               break;
      }  
}

解决方式
枚举值不是常量, 而case后面只能跟常量.
先将int型的type转换成枚举值, 再进行switch匹配

Comparison method violates its general contract!

在JDK7以后,实现Comparable接口后,要满足三个特性: 自反性, 对称性和传递性.
通常是因为没有满足对称性导致的, 如没有判断返回"相等"的情况

可以用System.setProperty("java.util.Arrays.useLegacyMergeSort", "true"), 或设置JVM参数-Djava.util.Arrays.useLegacyMergeSort=true来兼容JDK6及以前版本的代码, 因为JDK7之后默认使用的TimSort

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值