2013-06-18 104 views
0

所以繼承人我的問題。我有兩個類... SingularEntity和ListEntity。顧名思義,SingularEntity代表一個實體,而一個ListEntity代表一個單一實體列表....該列表明顯具有比SingularEntity本身更爲常見的屬性。所以,我有它擴展了SingularEntity類基於集合的泛型和反射

public class SingularEntity{ 
} 

public class AuthorizationEntity extends SingularEntity{ 

} 

現在我代表任何SingularEntities

public class ListEntity{ 

    public List<? extends SingularEntity> data; 

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

的名單現在,單個ListEntity,我想使用反射來始終填充列表的AuthorizationEntity。 ...並且我總是在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; 
     } 
+0

'javaBeanClassConstructor.newInstance(constructorArgs)'正在返回什麼類型? – sanbhat

回答

5

你應該參數的ListEntity類

public class ListEntity<T extends SingularEntity>{ 

    public List<T> data; 

    public ListEntity(List<T> data){ 
    this.data = data; 
    } 
} 
+0

謝謝大家...非常感謝....所以現在的編譯在罰款安全類型後....但調用的方法列表 authData = DTOBuilder.newBuilder()。DTOClassNameCalled(AuthorizationDTO.class) .InputListCalled(lstObject).build(); – user2214717

0

這裏的問題是,你已經定義了一個List<? extends SingularEntity>,所以你不能添加到此List。爲什麼不?因爲編譯器,這List可能是任何東西延伸SingularEntity,說一個新的MultipleEntity類。 Java不允許您將任何SingularEntity添加到SingularEntity的任何可能子類的任何List

要添加到List,只需使用List<SingularEntity>