method-reference相关内容
我刚开发了这个二十个不同页面的JavaFX应用程序。每个页面都有一个表格,我想在每个表格上放置一个上下文菜单。 基本上,它总是将上下文菜单放到表中的相同代码,但我希望方法引用可以帮助一点点。 这是实际的代码片段: resultTable.setRowFactory(new Callback ,TableRow
..
我有一个名为 saveButton 的 JButton ,并希望它调用保存单击时的方法。当然我们可以使用旧方法来做到这一点: saveButton.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ save(); } });
..
我正在使用Java 8.如何返回方法引用? 我能够返回lambda而不是方法引用。 我的尝试: 公共供应商 forEachChild(){ 返回新的ArrayList :: forEach; } OR public Function forEachChild(){ 返回新的ArrayList :: forEach; }
..
我需要处理一个列表,并为每个项目调用目标对象上的不同方法。看起来很优雅,我可以创建一个方法引用列表来执行此操作,因此对于列表中的每个索引,我可以调用与其对应的适当方法引用。 private final static List> METHODS =(List>)Arrays.asList( TargetClass
..
我最近把手放在Java 8上并尝试使用方法参考。 我正在尝试不同类型的方法引用,并且卡在“引用特定类型的任意对象的实例方法”类型中。 String [] arr = {“First”,“Second”,“Third”,“Fourth”}; Arrays.sort(arr,String :: compareToIgnoreCase); 这非常有效。但是当我尝试通过
..
在我给我公司的讲座中,我建议将任何复杂的lambda转换为方法参考(更易读,更好的调试和测试),并询问是否总是可行。 我搜索过,无法找到一个无法用方法参考替换的lambda。 我是对的吗? (lambda总是可以用方法引用替换) 解决方案 方法引用无法捕获变量。因此捕获lambda不能直接转换为方法引用。例如, int x = 1; numbers.replaceA
..
Sonar告诉我“用方法参考替换这个lambda” public class MyClass { private List createSomeValues(List anyList){ return anyList // .stream()// .map(anything - > createSomeValue(anythi
..
我目前正在JDK 1.8上学习lambda表达式。我遇到了一些我发现我不理解的代码。 这是代码: import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.lang.Comparable; / ** * Hello world! *
..
oracle Java 8文档定义了4种方法您可以使用的引用而不是Lambda表达式。我想要理解的是一种方法引用,描述为:“引用特定类型的任意对象的实例方法”,写为 ContainingType :: methodName 。 我不确定我是否遗漏了某些东西,但对我而言似乎更像是: “参考第一个功能接口的抽象方法的参数,假设它的类型为 ContainingType “。我试图想出这个'任意对
..
我对Java lambdas和方法引用行为有点困惑。例如,我们有这样的代码: import java.util.function.Consumer; 公共类Main { private static StringBuilder sBuilder = new StringBuilder(“1”); public static void main(String [] arg
..
有人可以向我解释, 为什么将非静态方法引用传递给方法 File :: isHidden 是好的, 但是将方法引用传递给非静态方法 MyCass :: mymethod - 给我一个 “无法对该方法进行静态引用非静态方法“? public static void main(String [] args){ File [] files = new File(“C:”)。list
..
给出以下代码: package com.gmail.oksandum.test; import java.util.ArrayList; import java.util.List; 公共类测试{ public static void main(String [] args){ } public void foo(){ class LocalFoo {
..
当我使用带有新运算符的Java 8方法引用双冒号运算符( :: )时(例如 MyType :: new ),我在Eclipse的Spring工具套件(STS)中遇到这个错误: 类型org.eclipse.jdt.annotation .NonNull无法解决。它是从所需的.class文件间接引用的。 如何摆脱这个错误? 解决方案 Stephan Herrmann的评论中提供了错
..
public class Main { interface Capitalizer { public String capitalize(String name); } public String toUpperCase(){ return“ALLCAPS”; } public static void main(String [] args){ Capitalizer
..
以下代码包含对 Enum :: name 的引用(请注意没有类型参数)。 public static> ColumnType enumColumn(Class klazz){ return simpleColumn((row,label) - > valueOf(klazz,row.getString(label)),
..
Java如何知道在调用 Collections.sort(someListOfStrings,String :: compareTo)时使用哪个 String :: compareTo 方法引用; ? compareTo 不是静态的,它需要知道比较“左手边”的值。 解决方案 假设您使用 Comparator 接口的方法参考: Comparator cmp = St
..
我错过了什么?为什么我必须在下面使用 Object :: toString 而不是 Integer :: toString ?它与带有泛型的类型擦除有什么关系吗? Arrays.asList(1,2,3).stream() .MAP(整数::的toString).forEach(的System.out ::的println); //不会编译 Arrays.asList(1,2,3).
..
我正在学习Java 8中的方法参考,我很难理解为什么会这样做? class Holder { private String holded; 公共持有人(String holded){ this.holded = holded; } public String getHolded(){ return holded; } } private void run
..
我有一群学生。首先,我想用标记对它们进行分组。然后我想进一步将这些集合分组到同名学生中。 Map >> groupping = students.stream() .collect(Collectors.groupingBy(Student :: getMarks, Collectors.mapping(
..
当我想引用当前作用域中的方法时,我仍然需要 来指定类名(对于静态方法)或这个之前 :: 运算符。例如,我需要写: import java.util.stream.Stream; public class StreamTest { public static int trimmedLength(String s){ return s.trim()。length(); }
..