向对象数组添加方法

时间:2017-01-19 16:48:07

标签: java reflection

我想在数组中填写一个方法。但我必须以一种奇怪的方式做到这一点:

public class AssignFunctionalInterfaceTest {

    public void test() {
        TestEntity t = new TestEntity();

        // compiles
        Supplier<Integer> a = t::getB;
        Object[] b = new Object[] {"42", a};

        // compiles
        Object[] b2 = new Object[] {"42", (Supplier<Integer>) t::getB};

        // doesn't compile. Error message:
        // "The target type of this expression must be a functional interface"
        Object[] b3 = new Object[] {"42", t::getB};
    }


    public static class TestEntity {

        public Integer getB() {
            return 0;
        }
    }
}

我真的想找到一种方法让第三项任务发挥作用。任何想法?

1 个答案:

答案 0 :(得分:0)

为什么你不能写这个是同样的事情:

Object x = t::getB;

创建lambda类的对象是一种语法糖,需要明确定义类型。有关详细信息,请参阅JLS, 15.13