2

私は豆のクラスを持っています

BeanClass {

  <prop1>;
  <prop2>;
  <prop3>;

  //getters and setters
  ...
}

および検証ユーティリティ:

Validations {

  static void notNull(Object value, ValidationResult result) {
    if (...) {
      ...
    }
  }

  static void doesNotExceedMaxLength(Object value, int max, ValidationResult result) {
    if (...) {
      ...
    }
 }

以下のようなバリデーターを生成したいと思います-

BeanValidator {

  ValidationResult validate(BeanClass bean) {
    ValidationResult validationResult = new ValidationResult();

    //prop1, prop3 are mandatory...
    notNull(bean.getProp1(), validationResult);
    notNull(bean.getProp3(), validationResult);

    //prop2 must not be more than 255 characters in length
    doesNotExceedMaxLength(bean.getProp2(), 255, validationResult)

    return validationResult;
  }
}

どのフィールドが必須で、どの値が特定の数を超えてはならないかの決定は、Bean クラスを参照して実行時に行われます。

Byte Buddy でこれを行うにはどうすればよいですか?

4

1 に答える 1

1

この目的で Byte Buddy を使いたいとは思いません。これがリフレクション API の目的です。Byte Buddy を使用してもパフォーマンスが向上するわけではなく、Byte Buddy ではソース コードが作成されないため、アプリケーションをさらに文書化することもありません。

そのようなバリデーターを実装するためにコード生成を使用したかったのはなぜですか?

于 2015-06-09T11:41:40.063 に答える