Tag: value of

枚举valueOf()的线程安全

这是一种变形的“perful -if or switch”困境…… 考虑使用静态方法的multithreading应用程序,该方法包含一个long(十几个条件) if语句,它检查对象的类型并相应地返回一个值,即类似 public static String checkType(Class type) { if (type == A.class) { return aString; } else if (type == B.class) { return bString; } … else if (type == z.class) { return zString; } } 显然,switch语句在这里不能直接应用,所以一个常见的模式是有一个enum并调用它的valueOf() ,即做类似的事情 public enum Strings { A(aString), B(bString), …, Z(zString) private final String value; private […]

Enum.valueOf(String)方法来自哪里?

在Java SE 7中(最有可能在以前的版本中),Enum类声明如下: public abstract class Enum<E extends Enum> extends Object implements Comparable, Serializable Enum类有一个带有此签名的静态方法: T static<T extends Enum> valueOf(Class enumType, String name) 但是没有静态方法:在Enum类中定义的valueOf(String)也不在Enum所属的层次结构中向上。 问题是valueOf(String)来自哪里? 它是语言的一个特性,即编译器内置的function吗?

新Integer(123),Integer.valueOf(123)和123之间的差异

我看到代码(Java)是这样的: myMethod(new Integer(123)); 我目前正在重构一些代码,并且在Sonar工具中有一个提示,使用这样的内存更友好: myMethod(Integer.valueOf(123)); 但是在这种情况下,我认为如果我使用的话没有区别: myMethod(123); 我能理解,如果我将一个变量传递给该方法,但是硬编码为int? 或者如果有Long / Double等,我想要长数字表示。 但是整数?