无法理解Java 8的功能
在我学习如何使用各种新工具时,我运行了这个语法函数x->。。。我很难理解它,如果可能的话,我希望有人能写一些等价的代码,这样我就能更好地理解它无法理解Java 8的功能,java,java-8,Java,Java 8,在我学习如何使用各种新工具时,我运行了这个语法函数x->。。。我很难理解它,如果可能的话,我希望有人能写一些等价的代码,这样我就能更好地理解它 Function<String, HashSet<String>> asSet = (String x) -> new HashSet<String>() {{ do_something(x); }}; 任何使用更传统语法而不是奇怪函数的代码块都将非常受欢迎,并有助于我更
Function<String, HashSet<String>> asSet = (String x) ->
new HashSet<String>() {{
do_something(x);
}};
任何使用更传统语法而不是奇怪函数的代码块都将非常受欢迎,并有助于我更好地理解Java 它可以替换为匿名类:
Function<String, HashSet<String>> asSet = new Function<>() {
@Override
public HashSet<String> apply(String s) {
return new HashSet<>() {{
do_something(s);
}};
}
};
您只需从函数中实现apply方法,该函数为:
请注意,可以使用lambda表达式、方法引用或构造函数引用创建函数接口的实例
请参阅更多基本信息,在不解释使用s的优点的情况下,您可以想象您的函数类似于:
HashSet<String> anonymousMethod(String x) {
return doSomething(x);
}
…匿名驻留在函数对象中。此语法称为它,用于简化实现
功能接口:是具有一个要实现的功能的接口,例如,您可以编写:
//演示功能接口的Java程序
或
//Java程序来演示
//使用lambda表达式的函数接口
函数只是一个普通的接口;->语法与此无关。原因可能重复,此代码不可理解,不是lambda表达式。这是由于使用了,它被用于一个与构造的映射完全无关的语句而被最大化了。该代码与函数asSet=x->{do_somethingx;return new HashSet;}的作用相同,只是它更为详细,并创建了HashSet的意外子类,如果包含的方法不是静态的,则包括内存泄漏。
class Test {
public static void main(String args[]) {
// create anonymous inner class object
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("New thread created");
}
}).start();
}
}
class Test {
public static void main(String args[]) {
// lambda expression to create the object
new Thread(() - > {
System.out.println("New thread created");
}).start();
}
}