【发布时间】:2016-02-10 19:59:05
【问题描述】:
我有两节课。一个是公共类,另一个是具有对象 HashMap 的抽象类。如何从我的公共类中调用抽象类的 HashMap.get(string) 方法?我是 Java 新手,可能会遇到这个问题,因为我不了解如何正确设置我的 java 文件。
这是我的两个课程的部分...(在同一个文件中Evaluator.java)
public class Evaluator {
...code
public int eval (String expr) {
Operator newOpr = (Operator) operators.get(tok);
}
... more code
}
//abstract class
abstract class Operator {
Operator(){
HashMap operators = new HashMap();
operators.put("+",new AdditionOperator());
operators.put("-",new SubtractionOperator());
}
abstract int priority();
static boolean check(String tok){
return true;
}
abstract Operand execute(Operand opd1, Operand opd2);
}
//priority 2, addition and subtraction
class AdditionOperator extends Operator{
@Override
int priority(){
return 2;
}
@Override
public Operand execute (Operand op1, Operand op2){
...code
}
}
【问题讨论】:
-
您的抽象类是否有一个公开访问
HashMap或其get 方法的方法?它需要一个。 -
你能把你的课程代码贴出来吗?
-
如果可以,请将 hashMap (theMap) 设为静态。否则,您必须对其进行子类化才能访问其实例方法。
-
抽象方法没有get。它是一个名为 Operator 的类,用于扩展创建运算符对象,例如 AdditionOperator 或 SubtractionOperator。
-
我编辑了我的评论。通常,如果你有一个抽象类,你会想要继承它。
标签: java class hashmap abstract