【发布时间】:2009-10-01 16:28:22
【问题描述】:
我真正想要的是一个具有泛型构造函数的类,并且当调用子类的相同构造函数时,子类将可以访问相同的字段。这是我想做的一个例子:
public abstract class Command{
private Mediator m
public Command(Mediator med){
m = med;
}
abstract void exec();
}
public class FoobarCommand extends Command{
public FoobarCommand(Mediator med){
super(med);
}
public void exec(){
med.doAFoobar()
}
}
public static void main(String[] args){
Mediator m = new Mediator();
Command c = new FoobarCommand(m);
c.exec();
}
显然这不起作用,因为 FoobarCommand 没有直接访问 Mediator med 的权限。那么,您将如何访问 med 字段?我不希望除了子类之外的任何其他人都可以访问它,并且“受保护”不是一个选项,因为我希望人们能够创建自己的命令(这显然会在包之外)。
【问题讨论】:
-
我不明白你为什么不选择预保护
-
看来这个问题是由于“exec”是指挥官的一种方法而不是调解人的方法。为什么不让 exec 的功能成为 Mediator 的方法(声明为 Mediator 接口的一部分)?然后你可以有一个通用的 Command 对象,它带有一个用于 Mediator 的 setter 和一个多态的 exec 方法。
-
感谢大家的cmets。我有点睡眠不足,意识到我一直想要“保护”,甚至不应该问这个问题:-!
标签: java