如何使用函数参数:调用特定的getter
我有一个带有名称和品种的狗类。我想根据传递给 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);
Dog dog = new Dog("Buster", "Shepherd");
printDog(dog, dog::getName);
printDog(dog, dog::getBreed);
回答
使用一个Function<Dog, String>. 这表示一个接受 aDog并返回 a的函数String。
public void printDog(Dog dog, Function<Dog, String> propertySelector) {
System.out.println(propertySelector.apply(dog));
}
你可以完全按照你想要的方式调用它: