Вы не можете непосредственно присвоить значение Object, как String.
Если вы действительно хотите достичь того же, я бы предложил вам создать фабрику с заранее определенными инициализированными объектами и получить требуемый объект из Factory с помощью шаблона Prototype
или шаблона FactoryMethod
.
Пример кода:
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
Подумайте, как вы скажете компилятору, какой объект вы назначаете классу? –