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



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

class Dog  {
private String name;
private String breed;
//constructor
public String getName()  {
return name;
}
public String getBreed()  {
return breed;
}
}
public void printDog(Dog dog, ?)  {
System.out.println(dog.?);
}
Dog dog = new Dog("Buster", "Shepherd");
printDog(dog, dog::getName);
printDog(dog, dog::getBreed);

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

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

你可以用你想要的方式来称呼它:

Dog dog = new Dog("Buster", "Shepherd");
printDog(dog, dog::getName);
printDog(dog, dog::getBreed);

最新更新