相关疑难解决方法(0)

Java 8中的Functional Interface有什么用?

我在Java 8中遇到了一个名为Functional Interface的新术语.

在使用lambda表达式时,我只能找到一个使用此接口的方法.

Java 8提供了一些内置的功能接口,如果我们想要定义任何功能接口,那么我们就可以使用@FunctionalInterface注释.它允许我们在接口中只声明一个方法.

例如:

@FunctionalInterface
interface MathOperation {
    int operation(int a, int b);
}
Run Code Online (Sandbox Code Playgroud)

除了使用lambda表达式之外,它在Java 8中有多大用处?

这里的问题与我提出的问题不同.在使用Lambda表达式时,它询问为什么我们需要功能接口.我的问题是:为什么使用功能接口而不是直接使用lambda表达式

java lambda interface java-8

144
推荐指数
7
解决办法
9万
查看次数

在Java中使用Supplier有什么好处?

阅读新Supplier界面我看不出它的用法有什么好处.我们可以看到它的一个例子.

class Vehicle{
  public void drive(){ 
    System.out.println("Driving vehicle ...");
  }
}
class Car extends Vehicle{
  @Override
  public void drive(){
    System.out.println("Driving car...");
  }
}
public class SupplierDemo {   
  static void driveVehicle(Supplier<? extends Vehicle> supplier){
    Vehicle vehicle = supplier.get();
    vehicle.drive();   
  }
}
public static void main(String[] args) {
  //Using Lambda expression
  driveVehicle(()-> new Vehicle());
  driveVehicle(()-> new Car());
}
Run Code Online (Sandbox Code Playgroud)

正如我们在该示例中所看到的,该driveVehicle方法需要一个Supplieras参数.为什么我们不把它改成期待Vehicle

public class SupplierDemo {   
  static void driveVehicle(Vehicle vehicle){
    vehicle.drive();   
  }
}
public static void main(String[] …
Run Code Online (Sandbox Code Playgroud)

java java-8

12
推荐指数
1
解决办法
2429
查看次数

Java8中功能接口的用途

关于Java8 内置功能接口,我遇到过很多问题,包括this,this,thisthis.但所有人都在问"为什么只有一种方法?" 或"如果我使用我的功能界面执行X,为什么会出现编译错误"等等.我的问题是:当我在自己的界面中使用lambda时,这些新功能接口的存在目的什么

请考虑以下来自oracle文档的示例代码:

    // Approach 6: print using a predicate
     public static void printPersonsWithPredicate(List<Person> roster, 
                                                  Predicate<Person> tester) {
            for (Person p : roster) {
                if (tester.test(p)) {
                   System.out.println(p);
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

好的,很好,但这可以用上面的自己的例子来实现(一个单一方法的接口并不新鲜):

      // Approach 5: 
        public static void printPersons(<Person> roster, 
                                        CheckPerson tester) {
            for (Person p : roster) {
                if (tester.test(p)) {
                   System.out.println(p);
                }
            }
        }


  interface CheckPerson {
        boolean test(Person p);
    }
Run Code Online (Sandbox Code Playgroud)

我可以将lambda传递给两个方法. …

java java-8 functional-interface

5
推荐指数
2
解决办法
715
查看次数

在java 8中将实例方法作为参数传递

可以说我有

public class Student {
     public Integer getGrade() { return 1;}
}
Run Code Online (Sandbox Code Playgroud)

我想将此函数作为 java 中的函数传递到其他类(不是学生)

哪种语法允许我这样做?

Function<Student,Integer> = ***
Run Code Online (Sandbox Code Playgroud)

java methods lambda java-8

1
推荐指数
1
解决办法
4645
查看次数

在 Java 中使用预定义的 lambda 作为参数

所以我试图通过这个测试:

public void testCountWithCondition() {
        List<Integer> data = Arrays.asList(1, 3, 8, 4, 6);
        int count = streamer.count(data, x -> x % 3 == 0);
        assertEquals(2, count);
    }
Run Code Online (Sandbox Code Playgroud)

我很难理解如何创建一个count可以将 lambda 表达式作为参数的方法。我看过其他帖子说您需要创建一个接口类,但是如何对其进行编程才能接受任何 lambda 表达式?另外,作业特别指出我需要使用流。谢谢!

java lambda java-stream

-2
推荐指数
1
解决办法
73
查看次数