我学习了Java8的新特性。
我在玩不同的例子,我发现了一个奇怪的行为:
public static void main(String[] args) {
method(Test::new);
}
static class Test{
}
private static void method(Supplier<Test> testSupplier){
Test test = testSupplier.get();
}
这段代码编译成功,但我不知道它是如何工作的。
@FunctionalInterface
public interface Supplier<T> {
T get();
}
supplier
接口有一个(功能性)方法:
因此,任何符合那两点的方法都符合供应商
的功能契约(因为方法将具有相同的签名)。
method(() -> new Test());
问题内容: 我正在一个项目中,该项目有很多由库创建的对象,并且无法访问这些对象的创建过程。 以下代码片段很好地说明了我的问题。 码: 是Clazz在编译时可能会或可能不会实现的接口。 码: 以下代码是我遇到的问题。请注意以下几点: 仅在c是的实例时调用。 并且都是我无法访问的类中的私有方法。 在编译时,将 不 包含名为的方法。 ExampleExecutor 不是 我的课程。我无法以任何方式访问它
问题内容: 我已经编写了用于会计系统访问的界面。我想从我的程序中隐藏接口的特定实现,因为我将永远只有一个“活动的”记帐系统。因此,我计划将接口的方法设置为不导出(隐藏),然后导出基本包中固有的导出函数,这些函数从本地适配器调用相同的函数。 问题在于,由于无法看到by 的实现,编译器会抱怨: 有什么方法可以用另一个包中的未导出方法实现接口?还是我以一种非惯常的方式思考这个问题? 问题答案: 您可以使
我的配置是:Wildfly8.2.0,Weld 是否可以在CDI中注入bean而不是在其接口中注入?
我想拆分我的验证器的声明和实现,与Spring boot环境中的这个问题非常相似。看起来好像是我让它几乎起作用了。我看到我的验证器实际上是由Spring验证调用的,但在执行验证后,Hibernate会抛出一个异常: 这是因为是一个接口(如预期)。 我已经这样配置了Spring(这是一个不同问题的答案): 我的自定义验证器: 所以它试图通过验证器名称找到一个Spring bean。所以我有一个验证器
我找不到任何解释原因的好消息:
问题内容: 这与java中的最终接口有关。在讨论中,有一个关于接口的最终概念是模棱两可的。最终接口是否意味着它不能具有子接口?这是否意味着它无法实现? 这个问题是第一个问题:您是否可以编写一个最终接口,以便编译器阻止您实现它? 问题答案: 正如我将展示的,可以使用代理来实现上面的接口。更有意义的问题是,为什么要尝试创建无法实现的界面?即使从哲学角度来说,它似乎也很肤浅。 这不会在编译或运行时产生错