草庐IT

抽象代数

全部标签

java - 为什么抽象方法必须由第一个具体类来实现,而不是由链下的一个更远的类来实现?

我很好奇为什么抽象方法必须被第一个具体实现类覆盖,而不是层次结构中更下一层的改变。我并不是在暗示我想这样做,但我很好奇为什么它必须是头等舱考虑这个例子abstractclassUpper{abstractvoiddoSomething();}classMiddleextendsUpper{voiddoSomething(){//I'mforcedtobeimplementedhere}}abstractclassLowerextendsMiddle{}classBottomextendsLower{voiddoSomething(){//I'mvalid,butI'mtoofardow

java - Spring Cache 不适用于抽象类

我正在尝试在抽象类中使用SpringCache,但它不起作用,因为据我所知,Spring正在抽象类中搜索CacheNames。我有一个使用服务层和Dao层的RESTAPI。这个想法是为每个子类使用不同的缓存名称。我的抽象服务类如下所示:@Service@TransactionalpublicabstractclassAbstractService{...@CacheablepublicListfindAll(){returngetDao().findAll();}}抽象类的扩展如下所示:@Service@CacheConfig(cacheNames="textdocuments")pu

java - Java中数组的抽象维度

在Java中,不同维度的数组有不同的类型。所以以int[]为参数的方法不能带int[][]或int[][][]。我有很多代码,在这些代码中我创建了非常相似但针对数组维度的方法。有没有一种方法可以处理任意维度的数组,从而抽象出这种通用功能? 最佳答案 如果您愿意放弃类型安全,您可以通过一点递归(这并不奇怪,对吧?)和反射(reflection)来实现。我们的想法是以一种向下递归的方式编写您的方法,直到数组只有一个维度。一旦处于单一维度级别,就开始工作;否则,递归调用自己,并在必要时汇总先前级别的发现。这是一个快速演示:importja

java - 从抽象类派生时如何遵守equals()的契约

在他的EffectiveJava一书中,JoshuaBloch描述了当派生类向检查中添加额外字段时,equals()的约定会出现的陷阱。通常,这会破坏对称性,但Bloch指出“您可以将值组件添加到抽象类的子类,而不会违反equals契约”。显然这是真的,因为不能有抽象类的实例,所以不存在可违反的对称性。但是其他子类呢?我写了这个例子,故意省略哈希码实现和空检查以保持代码简短:publicabstractclassVehicle{privatefinalStringcolor;publicVehicle(Stringcolor){this.color=color;}publicStrin

java - 抽象类和 Spring MVC @ModelAttribute/@RequestParam

我的Spring/Hibernate应用程序中有模型类的层次结构。当向SpringMVCController提交POST表单时,是否有任何标准方法来指定正在提交的对象的类型,以便Spring可以实例化在接收方法的@ModelAttribute或@RequestParam中声明的类型的正确子类?例如:publicabstractclassProduct{...}publicclassAlbumextendsProduct{...}publicclassSingleextendsProduct{...}//Meanwhile,inthecontroller...@RequestMappin

java - 抽象工厂模式与桥接模式

我刚刚了解了Bridge模式及其意图:将抽象与其实现分离,以便两者可以独立变化。但是为什么AbstractFactory不能做同样的事情呢?我知道AbstractFactory可以创建一个特定的桥,但我的问题是使用AbstractFactory而不是Bridge来解耦抽象和实现。能否请您解释一下AbstractFactory和Bridge模式之间的真正区别? 最佳答案 首先,我所读到的桥接模式更适用于类及其功能经常变化的情况。类本身可以被认为是实现,类的行为是抽象。另一方面,抽象工厂提供了一个接口(interface)来创建相关或依

java - Outputstream是一个抽象类,所以我们不能实例化它。为什么要为Outputstream类提供一个默认的构造函数呢?

这里是Outputstream抽象类的API文档的链接。你会找到一个默认的构造函数http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html#OutputStream%28%29 最佳答案 类必须至少有一个构造函数,因为所有Java类都有构造函数。此外,子类必须链接到它-所以它必须至少是protected可访问性。构造函数不需要做任何事情,因此作者决定不提供明确的构造函数。现在,来自JLS8.8.9:Thedefaultconstructorhasthesam

Java Web 服务/JAXB - 抽象父类(super class)

我有一个包含带有抽象父类(superclass)的JAXB注释类的包。我想在Web服务接口(interface)中使用这个父类(superclass),所以我可以将任何子类作为参数传递。当我这样做时,抛出异常:javax.xml.ws.WebServiceException:javax.xml.bind.UnmarshalException-withlinkedexception:[javax.xml.bind.UnmarshalException:Unabletocreateaninstanceofxxx.yyy.ZZZ-withlinkedexception:[java.lang.

java - 带有嵌套类的抽象类,这可能吗?

如果我写一个抽象类,然后在抽象类中嵌套一个类,我是否可以在抽象类的任何子类中访问它的方法?我无法在任何地方找到答案.. 最佳答案 当然,内部类的访问修饰符遵循与字段和方法相同的规则。不管你的类是抽象的还是具体的,只要嵌套类是public、protected或者子类在同一个包中并且内部类是packageprivate(默认访问修饰符),子类将可以访问它。publicabstractclassAbstractTest{//allsubclasseshaveaccesstotheseclassespublicclassPublicInne