如何创建一个Class,我们可以在其中直接赋值

时间:2015-12-10 17:09:22

标签: java class classloader

可能是标题会误导您。

String str ="abcd";

在上面的代码中,String是一个类,不使用new,我们可以创建一个带有值的对象。现在我有一个Number.java类,我必须在其中分配一些数字,如下所示。

Number no = 23;

如何创建这样的类。

5 个答案:

答案 0 :(得分:1)

我通常会说你应该使用运算符重载。但Java中不存在此功能。

见这里:Operator overloading in Java

答案 1 :(得分:0)

你不能。

Java编译器只是为您提供语法快捷方式。

来自Java Tutorial

  

[...]字符串文字[是]代码中的一系列字符   用双引号括起来。每当遇到字符串文字时   在您的代码中,编译器创建一个String对象,其值为

答案 2 :(得分:0)

您无法像字符串一样直接将值分配给Object。

如果你真的想要达到同样的目的,我建议你创建一个预先定义的初始化对象的Factory,并使用Prototype模式或FactoryMethod模式从Factory获取所需的对象。

示例代码:

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));
    }
}

输出:

Prototype.get(32):32

答案 3 :(得分:0)

实际上,由于自动装箱

,这种类型的赋值适用于原始包装类
Integer n = 23;

答案 4 :(得分:0)

你不能因为原始值是java语言的一部分,如果你想让一个类被初始化&#34;就像你应该将它添加到java解析或类似的东西。