たとえば、次のコードを使用します。
public class User {
private String username;
private String password;
protected User()
{}
public User(String username , String password)
{...}
//getters & setters
}
を使用User.class.getConstructors()
して 2 つのコンストラクターがあることを確認できます。 を使用するとconstructor.getParameterTypes()
、2 つの String パラメーターを持つ 1 つのコンストラクターがあることを識別できます。リフレクションを使用して、ユーザー名とパスワードの 2 つのプロパティを見つけることもできます。しかし、実行時には、constructor.newInstance(?,?) を呼び出すために使用される 2 つのパラメーターの適切な順序はわかりません。
constructor.newInstance(username , password)
、およびconstructor.newInstance(password , username)
両方とも有効ですが、結果はまったく異なります。
User.class.newInstance()
引数なしのコンストラクターが保護されているため、プロパティ値を使用および設定できません。
一般的な JPA CRUD ツールを作成しようとしているため、この問題が発生します。一覧・閲覧・更新・削除OK。しかし今、オンラインでオブジェクトを作成できないという問題に直面しています。エンティティ クラスはすべて、保護された引数なしのコンストラクター (したがって、class.newInstance() を使用できません) と、1 つのパラメーターの多いパブリック コンストラクター (ただし、パラメーター名は実行時に消去されます) を備えています。
これを行う方法 ?javassist やその他のプロキシ技術は役に立ちますか? どうやって ?どうもありがとう !