Cambiar tipo de método de referencia

Cada Lee:

Mi código:

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
}

y:

public enum BlogPostType {
    NEWS,
    REVIEW,
    GUIDE
}

y:

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);
}}

Tengo tres clases uno es BlogPost, BlogPostTypey Main.

Estoy haciendo un mapa de Map<BlogPostType, List<BlogPost>> Blistmediante el uso groupingBy()y funciona perfectamente bien. i utilizado un método de referencia hay BlogPost :: getType , puedo usar lambda expresión también (x) -> x.getType().

Pero cuando trato de cambiar el tipo de mapa, es decir, Map<String, List<BlogPost>> Blist1entonces no puedo usar Método de referencia . ¿Hay alguna forma posible utilizar el método de referencia y obtener el tipo también cambió ??

Estoy pensando por qué no puedo utilizamos como esto: BlogPost::getType.toString()o (String)BlogPost::getTypebien podemos hacer esto en lambda (x) -> x.getType().toString(). De cualquier forma posible el uso de referencia Método y se llevan bien con la conversión de tipo también?

Adrian:

se puede utilizar Function.identity()para la cadena de referencias de métodos (como todas las que quieras). Por ejemplo, ponga la siguiente función en groupingBy:

Function.<BlogPost>identity()
        .andThen(BlogPost::getType)
        .andThen(BlogPostType::toString)

pero es mejor usar lambda

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=222926&siteId=1
Recomendado
Clasificación