文章详情页
java - 接口中的成员变量怎么不是常量了?
浏览:115日期:2023-10-29 15:40:58
问题描述
switch (from) { case TAGs.casts://constant expression requiredbreak;}//我的TAGs.casts是这样的public interface TAGs { String casts = String.class.getSimpleName();}//如果写成这个样子就可以编译public interface TAGs { String casts = 'String';}
不是说接口中的成员变量都是常量吗?为什么在case上使用不了提示需要常量呢?
问题解答
回答1:使用接口要给常量赋初值,你自己写的没有给定初值,肯定是错的啊。
回答2:switch里的case需要在编译期就确定值,而String.class.getSimpleName();需要到运行的时候才能知道(尽管运行的时候确实是常量),所以编译不能通过
回答3:的确是。一个是编译时要求的知道,一个是runtime(反射的方法都是runtime的)。之前答错了——以前看effective java的时候是static final修饰的的。同时里面还有一个建议,导出常量请使用枚举类。
回答4:不是说接口中的成员变量都是常量吗请问这句话从哪里听来的?常量需要使用static final修饰,并且需要给定初始值
标签:
java
相关文章:
1. docker-machine添加一个已有的docker主机问题2. javascript - 新建js文件时如何自动地加上"use strict"?3. javascript - 如何获取未来元素的父元素在页面中所有相同元素中是第几个?4. apache - nginx 日志删除后 重新建一个文件 就打不了日志了5. java - 原生CGLib内部方法互相调用时可以代理,但基于CGLib的Spring AOP却代理失效,为什么?6. node.js - node express 中ajax post请求参数接收不到?7. java - tomcat服务经常晚上会挂,求解?8. javascript - 用jsonp抓取qq音乐总是说回调函数没有定义9. windows-7 - Win7中Vmware Workstatoin与Xampp中Apache服务器端口冲突?10. javascript - 新浪微博网页版的字数限制是怎么做的
排行榜
