Java:在子类中使用父类的静态方法

约书亚·品特(Joshua Pinter)

我试图通过使用一个BaseComponentType类并在我的ElectricalComponentType(和类似的子类)中从中继承来重构代码,如下所示:

BaseComponentType.java

public abstract class BaseComponentType {

    public static BaseComponentType findByUid ( Class klass, String uid ) {

        return new Select().from( klass ).where( "uid = ?", uid ).executeSingle();

    }

}

ElectricalComponentType.java

public class ElectricalComponentType extends BaseComponentType {

    public static ElectricalComponentType findByUid( String uid ) {

        return (ElectricalComponentType) findByUid( ElectricalComponentType.class, uid );

    }

}

我需要做的是调用,ElectricalComponentType.findByUid( 'a1234' )但是如果我不必findByUidElectricalComponentType类中定义而是可以从继承此功能,那将是很好BaseComponentType

您会注意到有两件事阻碍了您的发展:

  1. 我需要ElectricalComponentTypefindByUid父方法中

  2. 我需要返回ElectricalComponentType对象(或任何子类对象)而不是BaseComponentType类对象。

有没有办法做到这一点?

波希米亚风格

使用泛型,并且仅具有父类方法:

public abstract class BaseComponentType {
    public static <T extends BaseComponentType> T findByUid(Class<T> klass, String uid) {
        return new Select().from( klass ).where( "uid = ?", uid ).executeSingle();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从Java中父类的静态方法获取子类

子类可以使用模板父类的静态方法吗?

从子类更改父类的静态方法

Java:使用父类方法访问子类变量

Python在父类静态/类方法中获取子类

为什么父类的静态方法隐藏在子类中?

子类在调用继承的方法(Java)时会使用父类还是子类方法

Arduino在子类上使用父类方法

在Java的子类中使用父构造函数

如何在python中使用子类的方法调用第二个父类的方法?

我可以在ES6的父类的静态方法中使用类变量吗?

引用没有名称的类以在TypeScript的子类中使用不同的静态方法

我如何在超类方法中使用子类的静态字段

如何在父类具有相同const字段的继承方法中使用子类的const字段?

如何在C#中使用子类的实例访问父类的方法

我应该在子类中使用super()调用父类方法吗

如何更改子类中的类属性,并在父类中定义的方法中使用它?

在子类 c# 中使用在父类中创建的方法

有什么办法可以在JAVA中使用父类的对象来调用子类的构造函数?

如何使用父静态方法在TypeScript中创建子类?

在父类中使用的子类中初始化属性

在子类中使用父类记录器

在子类中使用父类的 getter 和 setter

在静态子类中获取调用父类

使用子类名称访问父类静态字段不会加载子类?

使Java父类方法返回子类对象的方法

Java:如何使用超类的静态方法从其创建子类的实例

Java运行时方法选择,在子类中使用“ super”,在超类中使用“ this”

如何使用父类的方法调用子类的方法?