首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java接口..。快速提问

java接口..。快速提问
EN

Stack Overflow用户
提问于 2010-03-11 14:54:05
回答 5查看 133关注 0票数 0

你能告诉我这条线是怎么工作的吗..。我的OperatorFactory.get("add")没有做任何事情。我不会把任何东西印出来

代码语言:javascript
复制
ArithmeticOperator add = OperatorFactory.get ("add");

当我有以下情况时:

代码语言:javascript
复制
interface ArithmeticOperator {

    // Returns the result of applying the operator to operands a and b.
    double operate (double a, double b);

    // Return a String that is the name of this operator.
    String printName ();
}


public class OperatorFactory implements ArithmeticOperator {



    public OperatorFactory(){

    }

    public static ArithmeticOperator get(String name){
        if(name.equals("add"))
                return new PlusOperator();
        else if(name.equals("sub"))
                return new SubOperator();
        else if(name.equals("mult"))
                return new MultOperator();
        else if(name.equals("div"))
                return new DivOperator();
        else
            return null;
    }

    public double operate(double a, double b) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public String printName() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

}

代码语言:javascript
复制
public class PlusOperator extends OperatorFactory {



    public double operate(double a, double b) {
        return a + b;

    }

    public String printName() {
        return "Add";
    }

}




public class PlusOperator extends OperatorFactory {



    public double operate(double a, double b) {
        return a + b;

    }

    public String printName() {
        return "Add";
    }

}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-03-11 14:58:51

您从不调用add.printName(),当然也不会输出任何内容,所以我并不奇怪什么都没有打印出来。

票数 3
EN

Stack Overflow用户

发布于 2010-03-11 15:00:29

你真的试过打印名字吗?

代码语言:javascript
复制
ArithmeticOperator add = OperatorFactory.get ("add");
System.out.println(add.printName());

另外,PlusOperator应该直接实现ArithmeticOperator。工厂不应该实现ArithmeticOperator。这允许您从工厂类中移除操作和printName方法。

票数 2
EN

Stack Overflow用户

发布于 2010-03-11 15:00:19

不像get()方法调用printName(),因此不应该打印任何内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2425927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档