java - 在父类(super class)中强制转换 protected 对象时如何摆脱警告?

标签 java

我有一个这样的基类:

class Base {
    protected Object a;

    Base(Object a) {
        this.a = a;
    }
}

然后是女儿类:

class Daugher extends Base {
    /*
    ... some attributes ....
    */     

    Daughter(Pair<L, R> a) {
        super(a);

    /*
    .... some methods ....
    */

    public void mathodX() {

        ....
        ((Pair <L, R>) a).getLeft().SomeSpecificMethodOfObjectTypeL()
        ....
    }

}

注意:Pair 特别是 org.apache.commons.lang3.tuple.Pair 对象,但我想这同样适用于其他结构,如 Map、List 等...

因此,如果我想使用强制对象类型中的特定方法,我就不得不像上面那样进行丑陋的转换。 但是,此强制转换会在 Eclipse 中引发“未经检查的强制转换”警告,因此效果不佳。 如果我尝试插入一个支票(例如“if (a instanceof Pair)”等...),我被告知我不能将 instanceof 检查用于特定分配,但我应该使用 Pair 进行检查。但这不是毫无意义的,因为我想达到特定于 L(或 R)的方法?

从更广泛的意义上提出问题,在父类(super class)中操作 protected 泛型对象的最正确方法是什么?

如果问题没有以最好的方式说明,我深表歉意,我不是 Java 专业人士。

感谢您的帮助!

最佳答案

一种方法是使用泛型:

class Base<T> {
    protected T a;

    Base(T a) {
        this.a = a;
    }
}

class Daugher<L, R> extends Base<Pair<L, R>> {
    Daugher (Pair<L, R> a) {
        super (a);
    }
}

关于java - 在父类(super class)中强制转换 protected 对象时如何摆脱警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26061413/

相关文章:

java - 使用 Java 的 Path2D 创建钢笔工具的问题

java - 如何测试Spring Security是否真正启用?

java - Eclipse - 集合在调试变量 View 中显示错误

Java FX : Detected [iscc. exe] 版本 0,但需要版本 5。由于配置问题跳过了 Bundler EXE 安装程序

java - 什么是 Java 中好的可调整大小、随机访问、高效的字节 vector 类?

java - 如何转换此日期格式的日期

java - Spring MVC : ServletContext in JUnit Test?

java - 无法在使用 Spring 开发的 Rest API 中接收 Double 数据类型

java - Hibernate 如何创建最终 DTO 类的代理对象?

java - 接口(interface)有 toString 方法吗?