草庐IT

explicit-interface

全部标签

java - Spring - 如何注入(inject)具体的接口(interface)实现?

我需要通过@Autowired注入(inject)服务类的具体实现。服务接口(interface):publicinterfacePostService{...}实现:@Service("postServiceImpl")publicclassPostServiceImplimplementsPostService{...}服务中的方法带有@Transactional注解现在我想将postServiceImpl注入(inject)我的Controller-因为我需要使用实现中的一种方法,该方法不在接口(interface)中:@Autowired@Qualifier("postServ

java - Java 8 默认接口(interface)中 `this` 的静态类型是什么?

我正在为一个项目实现访问者模式,并意识到我可以通过让accept的默认实现如下来节省一些输入。publicinterfaceVisitable{defaultpublicvoidaccept(Visitorv){v.visit(this);}}但是,如果this的静态类型解析为Visitable,此实现将不起作用,那么在这种情况下this的静态类型是什么? 最佳答案 由于在您的上下文中,this用作参数类型,因此调用将在编译和运行时解析为Visitor#visit(Visitable)。因此,在这种情况下尝试创建默认方法不会有任何好

java - java中常用的接口(interface)方法实现

我有2个实现特定接口(interface)的类。我想实现一个由2个类共享的方法。我可以将该方法实现添加到接口(interface)类,然后从2个类调用该方法吗?例如:publicinterfaceDM{publicstaticvoiddoSomething(){System.out.println("HelloWorld");}}publicclassAimplementsDM{doSomething();}publicclassBimplementsDM{doSomething();}}这可行吗?执行此操作的正确方法是什么? 最佳答案

java - 抽象父类(super class)的默认接口(interface)方法

假设我有以下结构:abstractclassA{abstractbooleanfoo();}interfaceB{defaultbooleanfoo(){returndoBlah();}}classCextendsAimplementsB{//functionfoo}Java现在会提示类C必须从A实现抽象方法foo。通过在C中重新定义函数并简单地调用B.super.foo();,我可以相对轻松地解决这个问题。但是我不明白为什么接口(interface)B中的默认函数本身不能满足这个要求,我想更好地了解java的底层机制。 最佳答案

java - 消除接受不同功能接口(interface)的重载方法的歧义

这个问题在这里已经有了答案:MethodReference-passingFunctiontomethodwithConsumerargument(2个答案)关闭4年前。我在Utils中有以下可用方法类:protectedUwithTx(Functionfc){//dosomethingwiththefunction}protectedvoidwithTx(Consumerconsumer){withTx(g->{consumer.accept(g);returnnull;});}并且在myClass的方法中我有:withTx(g->anotherMethod(g));第二段代码编译错

java - JAXB - 生成的类实现接口(interface)

有没有办法配置JAXB以便生成的类实现指定的接口(interface)?我打算将JAXB生成的类用作DAO,它们应该能够实现我的DAO接口(interface)。 最佳答案 不幸的是,其他一些答案中提到的接口(interface)注入(inject)插件似乎不再得到很好的支持。事实上,我找不到要下载的JAR。谢天谢地,JAXB2BasicsPlugins提供了一种类似的机制来向生成的JAXBstub添加接口(interface)(请参阅Inheritanceplugin)。JAXB2BasicsPlugins文档包含有关将插件与An

java - 实现多个接口(interface)的类的类型

我目前正在尝试编写一些类,但遇到了以下问题:我正在尝试编写一个从两个接口(interface)实现某些功能的类interfaceIA{publicvoiddoSomething();}interfaceIB{publicvoiddoSomethingToo();}我有两个实现这些接口(interface)的类:classFooAimplementsIA,IB{}classFooBimplementsIA,IB{}我有什么办法可以做到这一点:publicthisClassImGonnaUse=returnEitherFooAOrFooB();thisClassImGonnaUse.doS

java - 初始化接口(interface)?

在我遇到的当前问题(printingafiletoaphysicalprinterinJava)中,我一直在像疯子一样运行代码,试图从所使用的每个类的javadoc中吞噬任何有用的遗漏信息。现在,我从之前的问题中提取了相当多的这段代码,所以有相当一部分不是我自己写的。我注意到的问题是我抓取的代码正在初始化一个对象,比如实现接口(interface)(Doc)并将其分配给该接口(interface)的“SimpleDoc”?!小代码片段:Docmydoc=newSimpleDoc(textStream,flavor,null);现在,据我所知,在Java中我们创建了对象。我熟悉继承,也熟

java - 传递接口(interface)和重新加载类之间的性能差异

有一个consensus使用接口(interface)比使用类更好。我当然同意:接受ArrayList而不是List的库方法将是一个废话。还有一个共识是性能始终相同。这是我的benchmark不同意。接口(interface)和抽象类都有1到4个实现。当使用两个以上的实现时,性能开始出现差异。我正在寻找对此行为的解释(以及错误共识的起源)。 最佳答案 There'saconsensusthatusinginterfacesisbetterthanusingclasses.这太简单了。接口(interface)和抽象类各有优势。您链接

java - 在接口(interface)上使用 .getclass()

这可能是一个非常简单的问题。嘿,我是一名学生,对Java还比较陌生,我目前正在为明天的期中考试而学习。我遇到的练习题之一是当你有类似的东西时会发生什么:System.out.println(interface1.getClass().getName());interface1已声明为interface1=class1。我很确定它会打印“class1”而不是“interface1”,因为interface1不是一个类,对吗?但我不确定,因为问题还说如果它产生编译时错误,那么就这么说。我们的教授以欺骗我们而闻名,而且一旦我拿回测验并且仍然对为什么我做错了问题感到困惑。