Java 如何创建一个可以直接赋值的类
也许标题会误导你Java 如何创建一个可以直接赋值的类,java,class,classloader,Java,Class,Classloader,也许标题会误导你 String str ="abcd"; 在上面的代码中,String是一个类,不使用new,我们可以创建一个有值的对象。现在我有一个class Number.java,在其中我必须分配一些数字,如下所示 Number no = 23; 如何创建这样的类 我通常会说应该使用运算符重载。但是这个特性在Java中并不存在 请参见此处:您不能 Java编译器只是为您提供了一个语法快捷方式 从: […]字符串文字[是]代码中的一系列字符 用双引号括起来。每当遇到字符串文字时 在代码中
String str ="abcd";
在上面的代码中,String是一个类,不使用new,我们可以创建一个有值的对象。现在我有一个class Number.java,在其中我必须分配一些数字,如下所示
Number no = 23;
如何创建这样的类 我通常会说应该使用运算符重载。但是这个特性在Java中并不存在 请参见此处:您不能 Java编译器只是为您提供了一个语法快捷方式 从: […]字符串文字[是]代码中的一系列字符 用双引号括起来。每当遇到字符串文字时 在代码中,编译器使用其值创建字符串对象
不能像字符串一样直接为对象赋值 如果您真的想实现同样的目标,我建议您创建一个预定义初始化对象的工厂,并使用pattern或pattern从工厂获取所需的对象 示例代码:
import java.util.concurrent.atomic.*;
public class PrototypeFactory
{
public class NumberPrototype
{
public static final String THIRTY_TWO = "32";
public static final String FORTY_ONE = "41";
}
private static java.util.Map<String , AtomicInteger> prototypes = new java.util.HashMap<String , AtomicInteger>();
static
{
prototypes.put(NumberPrototype.THIRTY_TWO, new AtomicInteger(32));
prototypes.put(NumberPrototype.FORTY_ONE, new AtomicInteger(43));
}
public static AtomicInteger getInstance( final String s) {
//return (AtomicInteger)(prototypes.get(s)).clone();
return ((AtomicInteger)prototypes.get(s));
}
public static void main(String args[]){
System.out.println("Prototype.get(32):"+PrototypeFactory.getInstance(NumberPrototype.THIRTY_TWO));
}
}
实际上,由于自动装箱,这种类型的赋值确实适用于原始包装器类
Integer n = 23;
不能这样做,因为原语值是java语言的一部分,如果你想让一个类像这样被“初始化”,你应该将它添加到java解析或类似的东西中。想想,你将如何告诉编译器你给这个类分配了什么样的对象?
Integer n = 23;