草庐IT

抽象代数

全部标签

java - 接口(interface)优于抽象类的情况

这个问题在这里已经有了答案:InterfacevsAbstractClass(generalOO)(36个答案)AbstractclassvsInterfaceinJava(15个答案)关闭2年前。请告诉我Java中接口(interface)优于抽象类的情况

java - 强制重写非抽象方法

我在抽象类中有一个方法Stringfoo(),它已经进行了一些预计算,但无法提供该方法应该返回的最终结果。所以我想要的是,每个从我的抽象类继承的非抽象类都必须以首先调用super()然后计算结果的方式实现foo.有没有办法在Java中强制执行此操作? 最佳答案 是的,通过重新设计使用templatemethodpattern并包括一个抽象方法:publicabstractclassAbstractSuper{publicfinalStringfoo(){//Maybedosomethingbeforecallingbar...Str

java - 只有静态方法的类应该是抽象的吗?

我有一个提供静态实用类型方法集合的类。一方面,我不希望类能够被实例化。另一方面,我不想发出应该继承该类的信号(我认为这不太可能)。这个类是否应该抽象? 最佳答案 将类设为final并将默认构造函数设为private并且不提供任何public构造函数。这样一来,就没有人可以对其进行子类化或创建它的实例。 关于java-只有静态方法的类应该是抽象的吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/qu

java - 即使没有任何抽象方法,类也可以是抽象的吗?如果是有什么用?

我怀疑HttpServlet类是一个抽象类,即使类中没有任何抽象方法,所有方法都是具体的。即使没有任何抽象方法,类也可以是抽象的吗?如果是有什么用?谢谢 最佳答案 在HttpServlet的情况下,要点是servlet程序员通常不希望他们的servlet支持所有4种常用的HTTP方法(POST、GET、PUT、DELETE),因此它将doGet()、doPost()等方法抽象化会很烦人,因为程序员将被迫实现他们不需要的方法。因此,HttpServlet为所有那些除了向客户端返回错误状态代码外什么都不做的方法提供了默认实现。程序员可以

java - 使用 List<?> 成员定义抽象泛型类

即使尝试为此想出一个干净的标题也是一个挑战。基本思想是定义两个父类(superclass):一个用于“子”项目,其成员引用其“父”,另一个用于包含子对象的“父”列表。从child->parent和parent->child的链接是对称的。每个父/子父类(superclass)都有定义和实现附加功能的子类。总有一个并行子类使得child与parent配对.即parent将只包含child引用资料,以及child只会引用parent-子类型之间没有“交叉”。我该如何表示呢?几天来我一直坚持这个问题,我对多级嵌套泛型类型的创意越多,它就越糟糕。这就是我想要做的:abstractclassCh

java - 使用默认方法与抽象类的接口(interface),动机是什么?

上下文我最近遇到了这个C#提案defaultinterfacemethods我已经阅读了规范和更重要的是动机。可能我错过了什么,但动机有点让我讨厌。接口(interface)和完全抽象类之间的唯一实际区别是future的类可以实现(因此是[ISA])多个接口(interface),但可以继承(因此是[ISA])仅来自一个抽象类,(以及所有后果)我不清楚抽象类和具有默认方法的接口(interface)之间的确切区别是什么现在,除了我们可以使用默认方法将多重(实现)继承带入画面,这对于抽象类是不可能的。(我不想打开问题/讨论是好是坏,这不是这里的主题)不过讲的动机完全不同,三点:“...A

java - 使用 CDT 的抽象语法树 API 生成/编写 C 代码?

我已经能够使用CDT的ASTAPI成功解析源代码。我的问题涉及相反的方向:如何以编程方式构建CAST,然后告诉它自己写入文件?我看过ASTWriter类(但这是内部的),找不到任何关于构建实际AST的教程或文档。我发现一篇论文阐述了我想做的事情:GeneratingRewritableAbstractSyntaxTrees如果我可以构建树并说“自己写”,那么生成代码似乎会很容易。这在CDT中可能吗?我如何开始(最好没有弃用/内部方法?) 最佳答案 你需要的是使用ASTWriter:ASTWriterwriter=newASTWrit

java - 抽象枚举的 sun.reflect.Reflection 处理中可能存在错误?

我已经确定了SunJDK处理Java反射的至少是不受欢迎的行为,至多是一个错误enums带有抽象方法。我已经搜索了有关此特定行为的错误报告和StackOverflow答案,但结果却很枯燥。当您认为在如此良好使用和经过仔细测试的代码中发现了这样的问题时,您或多或少总是错误的,所以请理智检查我并告诉我我哪里出错了。代码考虑以下代码:a/Greeting.javapackagea;publicenumGreeting{HELLO{@Overridepublicvoidgreet(){System.out.println("Hello!");}};publicabstractvoidgreet

java - 使用 Spring 缓存抽象的异步缓存更新

使用Spring的缓存抽象,如何让缓存异步刷新条目,同时仍返回旧条目?我正在尝试使用Spring的缓存抽象来创建一个缓存系统,在该系统中,在相对较短的“软”超时后,缓存条目有资格进行刷新。然后,当它们被查询时,返回缓存的值,并启动异步更新操作来刷新条目。我也会Guava的缓存构建器允许我指定缓存中的条目应在一定时间后刷新。然后可以使用异步实现覆盖缓存加载器的reload()方法,允许返回陈旧的缓存值,直到检索到新值。但是,springcaching好像没有使用底层Guava缓存的CacheLoader是否可以使用Spring的缓存抽象来执行这种异步缓存刷新?编辑澄清:使用Guava的C

java - 用抽象方法覆盖默认接口(interface)方法

我觉得它很奇怪,想知道它是否是经常使用的东西。什么时候有用?publicinterfaceInterA{ObjectgetInfo()throwsException1;}publicinterfaceInterB{publicdefaultIntegergetInfo(Objects){return67;}}publicinterfaceInterCextendsInterA,InterB{@OverridepublicabstractIntegergetInfo(Objects);} 最佳答案 这在默认接口(interface)方