#java
#java
Вопрос:
У меня есть класс собак с именем и породой. Я хочу напечатать либо имя собаки, либо ее породу в зависимости от параметра метода, переданного методу 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);
Ответ №1:
Используйте a Function<Dog, String>
. Это представляет функцию, которая принимает Dog
и возвращает a 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);