我正在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