Мой код:
class BlogPost {
String title;
String author;
BlogPostType type;
int likes;
public BlogPost(String title, String author, BlogPostType type, int likes) {
this.title = title;
this.author = author;
this.type = type;
this.likes = likes;
}
//getter setter
}
и:
public enum BlogPostType {
NEWS,
REVIEW,
GUIDE
}
и:
public static void main(String[] args) {
List<BlogPost> posts = Arrays.asList(new BlogPost("Start Java", "Ram", BlogPostType.NEWS, 11),
new BlogPost("Start Java 8", "Rajou", BlogPostType.REVIEW, 101),
new BlogPost("Functional programming", "Das", BlogPostType.REVIEW, 111),
new BlogPost("Lambda", "Ramos", BlogPostType.GUIDE, 541));
Map<BlogPostType, List<BlogPost>> Blist = posts.stream().collect(groupingBy(BlogPost::getType));
System.out.println(Blist);
}}
У меня есть три класса, один это BlogPost
, BlogPostType
и Main
.
Я делаю карту Map<BlogPostType, List<BlogPost>> Blist
, используя groupingBy()
, и она прекрасно работает.я использовал ссылку на метод там BlogPost :: getType , я также могу использовать лямбда-выражение (x) -> x.getType()
.
Но когда я пытаюсь изменить тип карты, то есть Map<String, List<BlogPost>> Blist1
, я не могу использовать Ссылка на метод .Есть ли какой-нибудь возможный способ использовать ссылку на метод и получить также измененный тип ??
Я думаю, почему мы не можем использовать так: BlogPost::getType.toString()
или (String)BlogPost::getType
, в то время как мы можем сделать это в лямбда (x) -> x.getType().toString()
,Любые возможные способы использовать ссылку на метод и ладить с преобразованием типа также?