2012-04-12 9 views
0

オブジェクトが作成されるたびに、メソッドをJavaで実行する方法を知りたいと思います。例えばオブジェクトが作成されるたびにexcuteメソッド

public class Person { 
    private String name; 
    private int age; 
    private Date dateCreated; 

    public setName(String name){ 
    ... 
    } 
    ... some other methods ... 

    public setDateCreated(){ 
     this.dateCreated = new Date(); 
} 

私は本当にそれが作成されたときにすべてのオブジェクト上で実行される私のsetDateCreated()メソッドのためにしたいと思います。

+0

本当に、私はそれが同じであると思った:S – aki

答えて

1

もちろん、このクラスがJava Bean標準をコード化していると分かります。

標準はsetDateCreated()メソッドに渡されたDateオブジェクトを参照することを期待されます:

public void setDateCreated(Date newDate) { 
    this.dateCreated = ((newDate == null) ? new Date() : new Date(newDate.getTime())); 
} 

あなたはボイド戻り値の型を追加したら、それをあなたの方法を行うのは自由ですが、しかし、ショックを受けてはいけませんあなたが標準に準拠することを期待する他のコードが文句を言うならば。

+0

を初期化できない理由ではありませんか? –

+0

しました。 Java 1.0以降の標準を破っていることを指摘してください。 Java Beans(POJO)はEJBとは異なることを理解していますか? – duffymo

+0

それは私の問題を解決しました。私は私のコンストラクタでsetterメソッドの呼び出しを追加setCreated(new Date());本当にうまくいきます。ありがとう! – aki

9

ちょうどあなたのオブジェクトのコンストラクタでsetDateCreatedを呼び出す:

public Person(){ 
    setDateCreated(); 
} 

あなたはそれを後で変更したくない場合にも、コンストラクタで直接それを行うことができます:

public Person(){ 
    this.dateCreated = new Date(); 
} 
+0

ありがとう、それは私が何をしているか、いくつかの休止状態はこれでallong得ることができないいくつか。私のアプリケーションは、巨大なスタックトレースで失敗する... initメソッドの呼び出しに失敗しました。ネストされた例外はorg.hibernate.HibernateExceptionです:デフォルトのtuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]をインスタンス化できません... AND SO ON – aki

+0

Java Bean POJOの規則に従い、オブジェクトによってHibernateが異なりますか?ああ、私はそう思った。下の私の答えを見てください。 – duffymo

2

利用のコンストラクタを:

public Person(){ 
    setDateCreated(); 
} 

また、public class Person(){はする必要がありますpublic class Person{

+0

true :)しかし、休止状態がJavaBeansについて何か言った – aki

-1

私は、ある種のアスペクト指向のアプローチを使用します。つまり、あなたのクラスにコードを書くことを避けます。アスペクト指向プログラミングについては、アスペクトjまたはスプリングを確認してください。

+0

不要です。また、バイトコードを変更しないAOPアプローチは、通常、インターフェイスをプロキシすることを意味します。あなたはどのようにそれをctorで行うつもりですか?コンストラクタははるかに簡単です。この場合、AOPはクルミを開くハンマーです。 – duffymo

+0

オブジェクト作成のログにはどうしたらいいですか?すべてのクラスにそのコードを広めますか? aopにオプションがない場合 - ok - 既に入っている場合(春など)なぜそれを使用しないのですか? – hburde

+0

私はすべてのオブジェクトの作成を記録しません。あなたは?本当に?さらに、コンストラクタで "new"と呼ぶ瞬間、Spring Beanファクトリの制御下にはありません。 – duffymo

関連する問題