public LeNo generate (PrintStream stream) {
prepareOperands(stream);
LeNo l = (LeNo)left;
LeNo r = (LeNo)right;
if (l instanceof NumNo && r instanceof NumNo) {
return new NumNo((Integer.getInteger(l.name()).intValue()*Integer.getInteger(r.name())));
}
if ((l instanceof NumNo && l.name().equals("0"))||(r instanceof NumNo && r.name().equals("0"))) {
return new NumNo(0); // cut of rest of code here....
有没有办法可以创建一个新的NumNo方法,而不必在我返回时创建它?
问题是我仍然想要返回NumNo,但没有创建新的NumNo。
答案 0 :(得分:1)
只是return new NumNo(0);
你不想创造对吗?因为每次都一样吗?如果是这样,您可以创建该对象的静态实例。例如,
private static final NewNo ZERO = new NewNo(0);
这称为flyweight模式,您可以在其中创建一次常用实例。
答案 1 :(得分:0)
return NumNo.getClass();
返回一个类而不是一个实例。
使用java.lang.Class.newInstance()
例如:
klass = generate(stream);
object = klass.newInstance();