Vector.add('Y')在java 1.4中有效吗?

时间:2011-08-15 00:13:19

标签: java

在以下代码中

Vector v = new Vector();
v.add('c');
1.5中允许

v.add('c'),我认为这可能是因为1.5的自动装箱功能。
但我很惊讶地发现在1.4 v.add('c')中,允许使用字符文字作为add方法的对象类型方法参数。

这是否意味着字符文字被视为对象?


在发布问题之前,我通过执行“Integer i = 1”在我的Intellij IDE上进行交叉检查,IDE在该行上显示红色错误符号。但IDE未能在v.add('Y')语句中这样做。它没有显示任何错误。 无论如何它现在清楚了。 v.add('Y')不能在1.4或更早版本中编译。 感谢您的投入。我相信有时候最好去贝壳并检查那里。嗯......

3 个答案:

答案 0 :(得分:4)

我不确定你是如何编译它的,但不应该允许它。你确定你已经在1.4中编译了它吗?

这是我得到的

$ javac -target 1.4 -source 1.4 X.java
X.java:4: cannot find symbol
symbol  : method add(char)
location: class java.util.Vector
        v.add('Y');
         ^
1 error

答案 1 :(得分:1)

在源兼容性设置为1.4的情况下无法编译:

javac -source 1.4 VectorTest.java
VectorTest.java:6: cannot find symbol
symbol  : method add(char)
location: class java.util.Vector
        v.add('x');
     ^
1 error

答案 2 :(得分:1)

@ beny23和@ataylor正确地指出你没有真正在Java 1.4中编译,或者使用正确的标志来在更高版本的Java中执行等效操作。

我只想指出,无论你做了什么编译,代码都不会在真正的Java 1.4 JVM上运行。自动装箱char实际上只是调用Character.valueOf(char)的“语法糖”。问题是该方法不存在Character的Java 1.4版本。根据javadoc,该方法已添加到Java 1.5中。