代码之家  ›  专栏  ›  技术社区  ›  parsecer

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

  •  1
  • parsecer  · 技术社区  · 4 年前

    我有一个有名字和品种的狗班。我想根据传递给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 回复  |  直到 4 年前
        1
  •  4
  •   Sweeper    4 年前

    使用 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);