如何在循环中转换泛型?

IAd*_*ter 4 java generics casting coding-style

public static void someMethod(List < ? extends BaseDto > list) {
    for (ChildDto dto : list) {

    }
}
Run Code Online (Sandbox Code Playgroud)

ChildDto扩展了BaseDto,在这里我确定它的列表中充满了ChildDto.

我知道我可以做这样的事情

for (TextApplicationDto dto : (List<TextApplicationDto>)list) {
Run Code Online (Sandbox Code Playgroud)

但它看起来不漂亮.

有没有更好的方法来进行铸造?

gab*_*uzo 8

我认为最好的方法是:

public static void someMethod(List < ? extends BaseDto > list) {
    for (BaseDto dto : list) {
        ChildDto taDTO = (ChildDto)dto;
        // Whatever
    }
}
Run Code Online (Sandbox Code Playgroud)

它还允许您使用instanceof以确保列表仅包含ChildDto