2013-03-19 51 views
0

我需要將save()方法引入註解爲我的@Persistent註釋的任何類型。該方法簡單地保存對象進入下面的數據庫,並返回該對象的一個​​拷貝回來其行ID(例如Person personSaved = person.save()如何使AspectJ ITD中的方法返回類型爲當前類型?

爲此,我寫使用AspectJ的給定方面(PersistentObject是提供save()方法的界面) :上述

public aspect PersistencyAspect { 
    declare parents: (@Persistent *) implements PersistentObject; 

    public PersistentObject PersistentObject.save() { 
     // perform the save operation and return a copy of this 
    } 
} 

代碼看起來不錯。但我的問題是save()方法的返回類型。我想將其聲明爲@Persistent(例如Person)註釋的實際類型,而不是PersistentObject

你有解決我的問題嗎?提前致謝。

+0

我知道這個人是老了,但仍被列爲解答。如果看起來合適,請您接受並提出我的答案嗎?謝謝。 – kriegaex 2014-06-09 12:20:30

回答

1

我明白你想要什麼。技術答案很簡單:不。

OTOH,我覺得這是不是一個很大的損失,因爲似乎你想要的東西並沒有被很好的應用設計反正:

  • 你想save()返回一個對象,它是一種違反直覺的,因爲它不是一個吸氣劑。爲什麼你想要返回一個你已經擁有的對象?我期望save()有一個void返回類型。
  • 針對接口開發比針對特定類更清潔更好嗎?如果你返回任何東西,我猜接口類型不是一個不錯的選擇。
相關問題