Java 双功能<&燃气轮机;使用枚举

Java 双功能<&燃气轮机;使用枚举,java,java-8,Java,Java 8,我使用双函数来发送函数 我现在得到的是: public class Animal { public static String cat( final String field, final Object value ) { return "(CAT:" + field + toString(value) + ")"; } public static String dog( final String

我使用双函数来发送函数

我现在得到的是:

public class Animal {
    public static String cat(
        final String field,
        final Object value
    ) {
        return "(CAT:" + field + toString(value) + ")";
    }

    public static String dog(
        final String field,
        final Object value
    ) {
        return "(DOG:" + field + toString(value) + ")";
    }
}

public String getAnimal(
    final String animalFieldName,
    final BiFunction<String, Object, String> function,
    final Object animelieldValue
) {
    return function.apply(animalFieldName, animalFieldValue);
}
我想要的是双函数是一个枚举, 因此getAnimal()的签名将是:


有什么建议吗?我希望有代码示例。

不太确定您想要什么,但这似乎符合要求吗

enum Animal implements BiFunction<String, Object, String> {
    CAT,
    DOG,
    BEAR {
        @Override
        public String apply(String s, Object o) {
            return "This is a Bear!!!";
        }
    };

    @Override
    public String apply(String s, Object o) {
        return "(" + name() + ":" + s + o.toString() + ")";
    }
}

public void test() {
    for (Animal animal : Animal.values()) {
        System.out.println(animal.apply("hello", "Hello"));
    }
}
枚举动物实现双功能{ 猫, 狗, 忍受{ @凌驾 公共字符串应用(字符串s,对象o){ return“这是一只熊!!!”; } }; @凌驾 公共字符串应用(字符串s,对象o){ 返回“(“+name()+”:“+s+o.toString()+”)”; } } 公开无效测试(){ 对于(动物:Animal.values()){ System.out.println(animal.apply(“hello”,“hello”)); } }
不太确定您想要什么,但这似乎符合要求吗

enum Animal implements BiFunction<String, Object, String> {
    CAT,
    DOG,
    BEAR {
        @Override
        public String apply(String s, Object o) {
            return "This is a Bear!!!";
        }
    };

    @Override
    public String apply(String s, Object o) {
        return "(" + name() + ":" + s + o.toString() + ")";
    }
}

public void test() {
    for (Animal animal : Animal.values()) {
        System.out.println(animal.apply("hello", "Hello"));
    }
}
枚举动物实现双功能{ 猫, 狗, 忍受{ @凌驾 公共字符串应用(字符串s,对象o){ return“这是一只熊!!!”; } }; @凌驾 公共字符串应用(字符串s,对象o){ 返回“(“+name()+”:“+s+o.toString()+”)”; } } 公开无效测试(){ 对于(动物:Animal.values()){ System.out.println(animal.apply(“hello”,“hello”)); } }
是@OldCurmudgeon答案的变体,包含更多lambda:

enum Animal implements BiFunction<String, Object, String> {
    CAT,
    DOG,
    BEAR((s, o) -> "This is a Bear!!!");

    private final BiFunction<String, Object, String> function;

    private Animal(final BiFunction<String, Object, String> function) {
        this.function = function;
    }

    private Animal() {
        super((s, o) -> "(" + name() + ":" + s + o.toString() + ")");
    }
}

public void test() {
    Animal
        .values()
        .stream(animal -> animal.apply("hello", "Hello"))
        .forEach(System.out::println)
    ;
}
枚举动物实现双功能{ 猫, 狗, 熊((s,o)->“这是一只熊!!!”; 私有最终双函数; 私人动物(最终双功能){ 这个函数=函数; } 私人动物(){ 超级((s,o)->“(“+name()+”:“+s+o.toString()+”); } } 公开无效测试(){ 动物 .values() .stream(animal->animal.apply(“hello”、“hello”)) .forEach(System.out::println) ; }
是@OldCurmudgeon答案的变体,包含更多lambda:

enum Animal implements BiFunction<String, Object, String> {
    CAT,
    DOG,
    BEAR((s, o) -> "This is a Bear!!!");

    private final BiFunction<String, Object, String> function;

    private Animal(final BiFunction<String, Object, String> function) {
        this.function = function;
    }

    private Animal() {
        super((s, o) -> "(" + name() + ":" + s + o.toString() + ")");
    }
}

public void test() {
    Animal
        .values()
        .stream(animal -> animal.apply("hello", "Hello"))
        .forEach(System.out::println)
    ;
}
枚举动物实现双功能{ 猫, 狗, 熊((s,o)->“这是一只熊!!!”; 私有最终双函数; 私人动物(最终双功能){ 这个函数=函数; } 私人动物(){ 超级((s,o)->“(“+name()+”:“+s+o.toString()+”); } } 公开无效测试(){ 动物 .values() .stream(animal->animal.apply(“hello”、“hello”)) .forEach(System.out::println) ; }