Tag: inheritance

从Generic Supertype扩展?

在Java中,我能够从通用超类型扩展吗? 根据这篇文章,看起来我应该能够: http : //www.ibm.com/developerworks/java/library/j-djc05133.html 。 public abstract class MyClass extends T { 但是,当我在我的应用程序中执行类似操作时,我收到以下错误: “无法将类型参数T称为超类型。” 有谁知道我是否能够从Java中的通用超类型扩展? 而且,如果是这样,是否需要一些特殊的东西来实现这一目标? 编辑:我读错了文章。 它实际上正在讨论这个潜在的问题。

自绑定generics类型,具有流畅的接口和inheritance

我使用流畅的inheritance接口。 我声明基类Constructor受到保护,所以你不能创建一个Foo ,它会在调用add()时导致ClassCastException。 但我遇到了返回新Foo实例的静态方法的问题。 public class Foo<T extends Foo> // if i change to extends Foo i only get warnings { public static Foo createFoo() // <– error { return new Foo(); // <– error } protected Foo() {} public T add() { //… return (T)this; } } public class Bar extends Foo { public […]

Java中动态和静态类型赋值之间的区别

给定以下类层次结构,以下语句的动态和静态类型是什么? 类层次结构: class Alpha {} class Beta extends Alpha {} class Gamma extends Alpha {} class Epsilon extends Alpha{} class Fruit extends Gamma{} class Golf extends Beta {} class Orange extends Fruit{} 对于以下每个语句,静态类型? 动态类型?: Fruit f = new Fruit(); Alpha a = f; Beta b = f; a = b; Gamma g = f; 我的回答/问题 […]

类扩展多个Java类?

我知道一个类可以实现多个接口,但是可以扩展多个类吗? 例如,我希望我的类扩展TransformGroup和我创建的类。 这在Java中可行吗? 两个语句class X extends TransformGroup extends Y和class X extends TransformGroup, Y接收错误。 如果不可能,为什么? TransformGroup扩展了Group但我想它也扩展了Node因为它inheritance了Node字段,并且可以在需要Node对象的地方传递。 此外,与Java中的所有类一样,它们扩展了Object类。 那么为什么不可能扩展到多个类? TransformGroupinheritance 那么,如果可能的话,做到这一点的正确方法是什么? 如果没有,为什么以及如何解决问题呢?

Java接口扩展了Comparable

我希望有一个由T A参数化的接口A ,并且还希望实现它的每个类也实现Comparable (使用T及其子类型)。 编写interface A extends Comparable似乎很自然interface A extends Comparable interface A extends Comparable ,但这不起作用。 那我该怎么办呢?

Javainheritance中的私有成员

我被告知,对于Java子类,它可以inheritance其超类的所有成员。 这甚至意味着私人会员呢? 我知道它可以inheritance受保护的成员。 谁可以给我解释一下这个。 我现在完全糊涂了。

是否可以将JPA注释添加到超类实例变量中?

我正在为两个不同的表创建相同的实体。 为了使两个实体的表映射等不同,但只将其余的代码放在一个地方 – 一个抽象的超类。 最好的方法是能够在超类中注释诸如列名之类的通用内容(因为它们将是相同的),但这不起作用,因为JPA注释不是由子类inheritance的。 这是一个例子: public abstract class MyAbstractEntity { @Column(name=”PROPERTY”) //This will not be inherited and is therefore useless here protected String property; public String getProperty() { return this.property; } //setters, hashCode, equals etc. methods } 我想inheritance并仅指定特定于子项的内容,例如注释: @Entity @Table(name=”MY_ENTITY_TABLE”) public class MyEntity extends MyAbstractEntity { //This will not work since this field does […]

从静态方法调用超级方法

是否可以从子静态方法调用超静态方法? 我的意思是,以通用的方式,到目前为止,我有以下内容: public class BaseController extends Controller { static void init() { //init stuff } } public class ChildController extends BaseController { static void init() { BaseController.loadState(); // more init stuff } } 它的工作原理,但我想以通用的方式做,比如调用super.loadState(),这似乎不起作用……

何时初始化实例变量并分配值?

当doees实例变量初始化? 是在构造函数块完成之后还是之前? 考虑这个例子: public abstract class Parent { public Parent(){ System.out.println(“Parent Constructor”); init(); } public void init(){ System.out.println(“parent Init()”); } } public class Child extends Parent { private Integer attribute1; private Integer attribute2 = null; public Child(){ super(); System.out.println(“Child Constructor”); } public void init(){ System.out.println(“Child init()”); super.init(); attribute1 = new Integer(100); attribute2 = new Integer(200); […]

Java isInstance vs instanceOf运算符

整个generics的东西有点像扔我一个循环,更多的RTT。 Specificis? 啊,这里是要点: enum QueryHelper { query1, query2; static QueryHelper getQueryHelper (Class expectedReturn) { if (expectedReturn.isInstance (SomeRelatedClass.class)) return query1; else return query2; } } 然后我会这样称呼它: … QueryHelper helper = QueryHelper.getQueryHelper(SomeRelatedClass.class); … 这样我就可以在实际的帮助器中灵活地分配查询返回类型。 它做了一些铸造和对象创建。 我所看到的是,没有比赛,我应该以其他方式做到这一点吗? 或者整个想法是不是很糟糕? 真正的核心是我不明白class.isInstance和instanceOf运算符之间的区别? 我应该使用后者吗?