Skip to content

Instantly share code, notes, and snippets.

@lWeRl
Last active May 14, 2018 13:48
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lWeRl/65c7ab21685bb9e368955cedf212b2a7 to your computer and use it in GitHub Desktop.
Save lWeRl/65c7ab21685bb9e368955cedf212b2a7 to your computer and use it in GitHub Desktop.
Lambda & Generic error
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
//java version "1.8.0_151"
//fix https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8142476
public class LambdaGenHell {
interface IdEntity {
Long getId();
}
static class Model {}
static class IdModel extends Model implements IdEntity {
private Long id;
public IdModel(Long id) {
this.id = id;
}
@Override
public Long getId() {
return id;
}
}
public static void main(String[] args) {
List<IdModel> list = Arrays.asList(new IdModel(1L), new IdModel(2L), new IdModel(3L));
makeHell(list); //BootstrapMethodError
make(list); //Without error
}
static <T extends Model & IdEntity> List<Long> makeHell (List<T> list) {
return list.stream().map(IdEntity::getId).collect(Collectors.toList());
}
static <T extends Model & IdEntity> List<Long> make (List<T> list) {
return list.stream().map(e -> e.getId()).collect(Collectors.toList());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment