Метод, содержащий интерфейс в качестве параметра - PullRequest
0 голосов
/ 14 ноября 2018

привет, как мне вызвать метод, принимающий интерфейс в качестве параметра от основного?Код в main является примером того, чего я хочу достичь, но теперь вызывая метод map

Что я пишу в методе map и как я вызываю его в main?Спасибо

Чего я хочу достичь:

StringTransformation addBlah = (e) -> {
    e += "boo";
     return e;
};
System.out.println(addBlah.transf("Hello")); // prints Helloboo

public class Main{

    public static void main(String[] args) {
        String a = hello;
        // How do I modify the string a by calling map ?


    }

    void map(StringTransformation t) {
        // What do I write ??
    }
}

public interface StringTransformation {
    String transf(String s);
}

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Вы хотите изменить String с заданным StringTransformation, поэтому вам нужно передать их обоих в метод map.Также вы можете превратить addBlah в более простую лямбду:

public static void main(String[] args) {
    StringTransformation addBlah = (e) -> e + "boo";

    String str = "Hello";
    System.out.println(str);    // Hello
    str = map(addBlah, str);
    System.out.println(str);    // Helloboo
}

static String map(StringTransformation t, String argument) { 
    return t.transf(argument);     
}
0 голосов
/ 14 ноября 2018

Вы не можете вызвать map внутри метода static main. Вы также должны сделать map статическим методом, если хотите это сделать. Также мы не можем помочь вам с тем, что поместить в вашу функцию map, если вы не скажете нам, что она должна делать.

public static void main(String[] args) {

    String string = "Hello";
    // you can call `mapBoo` like normal here
    string = mapBoo(string);
    System.out.println(string);

    List<String> strings = Arrays.asList("Hello", "this", "is", "a", "test");

    // or you can pass mapBoo into the stream.map method since map fits the method signature
    List<String> mappedStrings = strings.stream().map(Main::mapBoo)
            .collect(Collectors.toList());

    for (String mappedString : mappedStrings)
        System.out.println(mappedString);
}


static String mapBoo(String s) {
    return s + "boo";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...