繁体   English   中英

一个通用的 class 让我有不同的返回类型(Java)

[英]A generic class that lets me have different return types (Java)

今天我一直在使用 java () 中的泛型/参数类型来练习我的多态性理解,但是很长一段时间以来,我一直遇到一个问题,即我将使用一个返回值的单一方法来使用泛型 class,原因是因为我希望能够调用一个方法并且通过上下文能够有不同的返回类型

class dummy <E>{
    E value;
    public E getValue(){
         return value;
    }
class dummy1 extends dummy<E>{
    int value;
    public int getValue(){
         return int;
    }
class dummy2 extends dummy<E>{
    boolean value;
    public boolean getValue(){
         return boolean;
    }

这可能吗? 我不确定这是否是做这种事情的正确方法

您遇到的问题是,在 Java 原语中,例如intboolean不能是通用的 arguments。

您需要将这些替换为等效的参考类型: IntegerBoolean

E也适用于dummy class。 您需要向超类提供类型参数。

class Dummy<E> {
    private E value;
    public Dummy(E value) {
         this.value = value;
    }
    public E getValue() {
         return value;
    }
}
class Dummy1 extends Dummy<Integer> {
    public Dummy1(Integer value) {
         this.value = value;
    }
}
class Dummy2 extends Dummy<E> {
    public Dummy2(Boolean value) {
         this.value = value;
    }
}

或者:

abstract class Dummy<E> {
    public abstract E getValue();
}
class ReferenceDummy<E> extends Dummy<E> {
    private final E value;
    public Dummy1(E value) {
         this.value = value;
    }
    @Override public E getValue() {
         return value;
    }
}
class Dummy1 extends Dummy<Integer> {
    private int value;
    public Dummy1(int value) {
         this.value = value;
    }
    @Override public Integer getValue() {
         return value;
    }
}
class Dummy2 extends Dummy<Boolean> {
    private boolean value;
    public Dummy1(boolean value) {
         this.value = value;
    }
    @Override public Boolean getValue() {
         return value;
    }
}

请注意,例如, boolean getValue() Boolean getValue()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM