我正在Google App Engine上编写一个项目,其中包含许多抽象类,我希望我可以在将来的项目中使用这些类,以及一些从它们继承的具体类。 在其他抽象类中,我有一个抽象的servlet来进行用户管理,而且我有一个抽象用户。 AbstractUser具有将其存储在数据存储中并告诉用户是否注册了我的服务的所有必要字段和方法。它没有实现任何项目特定的功能。管理用户的抽象servlet只涉及AbstractUser类中声明的方法,它允许它生成登录,注销和注册(对于未注册的用户)的链接。 为了实现项目特定的用户功能,我需要继承Abstract用户。我在我的项目中使用的servlet都是来自抽象用户管理servlet的间接后代,并且用户是其中的受保护字段,所以后代servlet可以将其用作自己的字段。但是,无论何时我想访问具体用户的任何项目特定方法,我都需要将其转换为该类型。 即从子类(Java)设置超类中字段的类型
(abstract user managing servlet)
...
AbstractUser user = getUser();
...
abstract protected AbstractUser getUser();
(project-specific abstract servlet)
@Override
protected AbstractUser getUser() {
return MyUserFactory.getUser();
}
任何其他项目特定的servlet:
int a = ((ConcreteUser) user).getA();
嗯,我想要做的就是以某种方式使超类中的“用户”的类型是什么取决于该项目的东西特定的抽象类。这是否可能?
而且我不想把所有的用户管理的东西到一个特定的项目层,我想有它我已经写了未来项目:)
谢谢您的帮助。
非常感谢,它的工作完美。 – Ibolit 2010-06-18 12:00:14