抽象类可能有也可能没有抽象方法,但接口(interface)只有未实现的方法。那么,如果我的抽象类的所有方法都标记为抽象,那么使用接口(interface)有什么区别和优势呢? 最佳答案 接口(interface)和抽象真正的用途可以在具有大量类的巨大API中体现出来,这些类遵循经过深思熟虑的灵活结构以供将来编码。它是否会发生——你永远不知道代码是否会被扩展。接口(interface)仅用于语义原因。想象一下,您扩展了一个已弃用的API版本,并负责编辑/更改/实现/更新/改进/扩展/修改代码以使其保持最新,无论原因是什么。如果您不向
通过MVC架构设计的程序的多个层,我发现我希望获得有关更深层方法返回结果的更多信息,但我并不总是可以预测何时需要这些信息。并且-为了抽象起见-我可能不希望该方法将内容输出到特定于应用程序的日志(该方法可以在不同的程序中使用),或者像上面的其他层一样具有特定的应用程序相关行为。例如,在给定的实用程序函数中,我可能在执行某个操作之前进行了多项先决条件检查,但都失败了。如果我对其中任何一个返回false,调用者就不知道发生了什么。如果我返回false并将发生的事情记录到应用程序日志中,我将该函数绑定(bind)到应用程序特定的行为。问题是:实现一个名为MyResult的小类并让它返回响应状态
假设我有以下类(class)publicabstractclassFoo{publicintbar(){//implementation}publicabstractintbar2();}和一个基类,使为此类编写装饰器变得更容易publicclassFooWrapper{privatefinalFoodelegate;protectedFooWrapper(Foodelegate){this.delegate=delegate;}@Overridepublicintbar(){returndelegate.bar()}@Overridepublicintbar2(){returndel
我有一次面试,面试官首先问我抽象类与所有抽象方法和接口(interface)有什么区别。我回复说以后如果要继承什么东西你已经扩展了一个类就不行了。然后,他表示在这种情况下,永远不必扩展任何其他类,而您必须实现契约。在这种情况下,抽象类和接口(interface)哪个更好?我告诉他你可以使用其中任何一个,但他并不满意。我不明白为什么-我相信这是开发人员/设计的选择。 最佳答案 声明接口(interface)表示契约的答案是NotAcceptable。这就是我们给Junior的答案,因为如果没有太多的架构经验和阅读大量经典书籍,很难清楚
如果我添加一个ActionListener,那么我总是在括号之间使用“this”。但是这个“这个”代表什么?! 最佳答案 addActionListener方法将当前类对象作为参数。“this”关键字的意思是“我现在正在处理的这个对象”。如果您使用的是netbeans,您可以键入“this”并在其后加上一个句点以查看“this”类中定义的所有方法。它应该列出您的类中定义的所有方法,包括任何继承的方法。要完全理解“this”的含义,首先要理解类和对象的关系。如果您想从技术上讲,“this”是对当前对象的引用。
如何在特定方法中调用其他类的方法?例子方法getItem1()publicStringgetItem1()throwsUnsupportedEncodingException{Stringa="2";a.getBytes();a.getBytes("we");System.out.println(a);intt=Integer.parseInt(a);returna;}getItem1()中调用的方法有:String.getBytes()String.getBytes(String)PrintStream.println(String)Integer.parseInt(String)
例如,我有:JPanelpan=newJPanel();然后我做“平移”。eclipse显示内容辅助。在这个内容帮助中,有JPanel类中的所有方法和所有JPanel父类(superclass)中的所有方法(很多)。我希望eclipse仅向我显示JPanel类的方法,而不是其父类(superclass)的方法。怎么做? 最佳答案 它不是内容辅助,但您可以使用Ctrl+O查看没有父类(superclass)的类的所有方法。 关于java-使用Eclipse,如何在ContentAssist
有没有人知道带有@Deprecated注解的类是否意味着所有方法和字段都将自动弃用..?来自JLS9.6.3.6.@Deprecated至少eclipse没有将已弃用类的方法显示为已弃用。 最佳答案 没有。如果你这样做@DeprecatedclassOld{publicvoidfoo(){}}当你引用那个类时:newOld().foo()只有Old将被标记为已弃用。 关于java-带有@Deprecated注释的类意味着所有方法和字段都将自动弃用,我们在StackOverflow上找到一
我对接口(interface)编程还很陌生,我正在努力将其作为开发测试驱动的主要工具。目前我们有很多管理器类都实现了一个CRUD接口(interface)。然而,有些管理器还没有更新,有些还没有删除,有些可能永远不会这样做。未实现异常?可以吗,只是thrownewNotImplementedException()直到该方法被实现,或者如果它永远不会实现,甚至永远?(显然有源代码注释告诉程序员“不应使用此方法,例如‘男性’‘女性’等类型永远不会被删除)?split?或者我应该将我的CRUD界面拆分为可创建、可读(可搜索)、可更新和可删除?这不会扰乱我的类定义吗?PersonManager
我想在Spring(3.2.3)@Controller中的每个方法之前运行一些代码。我定义了以下但它不会运行。我怀疑切入点表达式不正确。调度器-servlet.xmlc.e.w.c.ThingAspect@Pointcut("execution(com.example.web.controllers.ThingController.*(..))")publicvoidthing(){}@Before("thing()")publicvoiddoStuffBeforeThing(JoinPointjoinPoint){//dostuffhere} 最佳答案