Java 8中的“特定类型的任意对象”是什么意思?
2022-09-01 12:52:24
在Java 8中有“方法参考”功能。其中一种是“引用特定类型的任意对象的实例方法”
http://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html#type
有人能解释一下“特定类型的任意对象”在这种情况下是什么意思吗?
在Java 8中有“方法参考”功能。其中一种是“引用特定类型的任意对象的实例方法”
http://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html#type
有人能解释一下“特定类型的任意对象”在这种情况下是什么意思吗?
从链接的Oracle文档中给出的示例是:
String[] stringArray = { "Barbara", "James", "Mary", "John", "Patricia", "Robert", "Michael", "Linda" };
Arrays.sort(stringArray, String::compareToIgnoreCase);
lambda 等价物
String::compareToIgnoreCase
将
(String a, String b) -> a.compareToIgnoreCase(b)
该方法正在查找比较器作为其第二个参数(在此示例中)。传递将创建一个比较器,作为比较方法的主体。然后你问好什么是和.比较方法的第一个参数变为 ,第二个参数成为 。这些是字符串(特定类型)类型的任意对象。Arrays.sort()
String::compareToIgnoreCase
a.compareToIgnoreCase(b)
a
b
a
b
不理解?
在源头阅读更多内容: http://moandjiezana.com/blog/2014/understanding-method-references/
它是对某种类型的实例方法的引用。在本例中,是 来自 的方法。该程序知道它可以在 的实例上调用此方法,因此它可以获取引用和该类型的任何对象,并保证该方法存在。compareToIgnoreCase
String
String
我会将其与类进行比较,因为它们引用方法并且可以在某种类型的任意实例上调用。Method
对于该示例,它可以使用两个对象并调用一个对象,并将另一个对象用作匹配方法签名的参数。这允许它获取数组并根据数组类型的任何方法对其进行排序,而不是要求比较器实例来执行此操作。String
compareToIgnoreCase
以下是任何没有点击问题中链接的人的示例:
String[] stringArray = { "Barbara", "James", "Mary", "John",
"Patricia", "Robert", "Michael", "Linda", "George" };
Arrays.sort(stringArray, String::compareToIgnoreCase);