出于各种商业原因,我想在我的一个类中保留一些静态ID.它们本来是,int但我想改变它们,Integer所以我可以对它们做一个平等(即MY_ID.equals(..)避免使用NPE)
当我将它们更改为Integer时,我的switch语句中出现错误.该文件说,整数应该是交换机内确定.
报价
[Switch]也适用于枚举类型(在枚举类型中讨论),String类,以及一些包含某些基本类型的特殊类:Character,Byte,Short和Integer(在Numbers和Strings中讨论).
在我的代码下面,如果我是一个,int那么它编译.当它是一个Integer它并没有说a constant expression is required.我已经尝试过,.intValue()但这也不起作用.
我真的很蠢吗?或完全误读文档?
private static final Integer i = 1;
@Test
public void test() {
switch(mObj.getId()){
case i: //do something
default: //do something default
}
}
Run Code Online (Sandbox Code Playgroud)
感谢您的任何指示.暂时我一直在int做他们new Integer(myint).equals(...)
我读到指针在Java中不可用.但是C++中的"This"指针被"This"关键字取代.那么有人可以解释一下动态内存分配和java中指针的替换
是的,纯粹的理论问题.当我们从定义的类创建一个新对象时,我真的不清楚它到底发生了什么.
对于实例变量,每次创建新的内存位置似乎是合理的,因为它们可以具有不同的值.
但我曾经想过,每次将所有类的方法复制到新对象时,在内存方面都没有任何意义.那么java在方法调用期间实际上是使用类方法还是在新对象中创建相同方法的副本?
作为CS的本科生,我从C开始,其中指针是一种重要的数据类型.之后我谈到了Java,JavaScript,PHP,Python.它们本身都没有指针.
所以为什么?他们的语言中是否有一些像指针一样的等价物,或者指针的功能不再重要了?
我大概有一些想法,但我很乐意听到更有经验的程序员对此的看法.