0

だからここに私の問題があります。SingularEntity と ListEntity の 2 つのクラスがあります。名前が示すように、SingularEntity はエンティティを表し、ListEntity は特異エンティティのリストを表します....リストには明らかに SingularEntity 自体よりも一般的なプロパティがあります。だから私は SingularEntity クラスを拡張する AuthorizationEntity を持っています

public class SingularEntity{
}

public class AuthorizationEntity extends SingularEntity{

}

これで、任意の SingularEntities のリストを表す単一の ListEntity ができました

public class ListEntity{

  public List<? extends SingularEntity> data;

  public ListEntity(List<? extends SingularEntity> data){
        this.data = data;
  }
}

今、リフレクションを使用して常にリストにデータを入力したい....そして、常に results.add メソッドでエラーが発生します。メソッド List.add(CAP#1) は適用できないと言います。どんな助けでも大歓迎です

public List<? extends SingularEntity> build() {
            List<? extends SingularEntity> results = new ArrayList<SingularEntity>();
            try {

                Constructor javaBeanClassConstructor =
                        (Constructor) DTOClass.getDeclaredConstructors()[0];
                Class<?>[] constructorParameterTypes =
                        javaBeanClassConstructor.getParameterTypes();


                for (Object[] columns : lstInput) {
                    Object[] constructorArgs = new Object[constructorParameterTypes.length];
                    for (int j = 0; j < columns.length; j++) {
                        Object columnValue = columns[j];
                        Class<?> parameterType = constructorParameterTypes[j];
                        // convert the column value to the correct type--if possible  
                        constructorArgs[j] = ConversionManager.getDefaultManager()
                                .convertObject(columnValue, parameterType);
                    }

                    *results.add(javaBeanClassConstructor.newInstance(constructorArgs));*
                }
            }catch(Exception ex){
            }
            return results;
        }
4

2 に答える 2

5

ListEntity クラスをパラメータ化する必要があります

public class ListEntity<T extends SingularEntity>{

  public List<T> data;

  public ListEntity(List<T> data){
    this.data = data;
  }
}
于 2013-06-18T17:18:10.710 に答える
0

ここでの問題は、 a を定義したList<? extends SingularEntity>ため、 this に追加できないことですList。なぜだめですか?コンパイラにとって、これは拡張するもの、たとえば新しいクラスListの可能性があるためです。Java では、 の可能なサブクラスのいずれかに任意のものを追加することはできません。SingularEntityMultipleEntitySingularEntityListSingularEntity

に追加するにはList、単にList<SingularEntity>.

于 2013-06-18T17:18:39.960 に答える