1
我想填充數組中的方法。但我必須以一種奇怪的方式做到這一點:將方法添加到對象數組
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;
}
}
}
我真的很想找到一種方法來使第三項任務的工作。有任何想法嗎?
爲什麼「42」是數組中的值?它需要成爲?否則你可以創建一個'供應商 []'而不是'Object []' –
CraigR8806
這實際上是關於混合在一起的事情。我明白你的觀點,但對我的問題沒有幫助。 –
我可能對此有錯,但我想爲什麼它不會讓你只是將方法引用放在數組中,是因爲它需要以某種方式與'Supplier <>'相關聯,因爲它改變了它的方式由編譯器查看。我認爲'Supplier <>'類在指針和編譯器的實際方法之間建立了聯繫。 – CraigR8806