如何使用函数参数:调用特定的getter

par*_*cer 1 java

我有一个带有名称和品种的狗类。我想根据传递给 printDog 方法的方法参数打印狗的名字或品种。我怎么做?

class Dog  {
  private String name;
  private String breed;

  //constructor

  public String getName()  {
    return name;
  }

  public String getBreed()  {
    return breed;
  }
}
Run Code Online (Sandbox Code Playgroud)
public void printDog(Dog dog, ?)  {
  System.out.println(dog.?);
}
Run Code Online (Sandbox Code Playgroud)
Dog dog = new Dog("Buster", "Shepherd");
printDog(dog, dog::getName);
printDog(dog, dog::getBreed);
Run Code Online (Sandbox Code Playgroud)

Swe*_*per 5

使用一个Function<Dog, String>. 这表示一个接受 aDog并返回 a的函数String

public void printDog(Dog dog, Function<Dog, String> propertySelector)  {
  System.out.println(propertySelector.apply(dog));
}
Run Code Online (Sandbox Code Playgroud)

你可以完全按照你想要的方式调用它:

Dog dog = new Dog("Buster", "Shepherd");
printDog(dog, dog::getName);
printDog(dog, dog::getBreed);
Run Code Online (Sandbox Code Playgroud)