gpt4 book ai didi

java - 实现抽象泛型方法

转载 作者:行者123 更新时间:2023-12-03 01:21:49 33 4
gpt4 key购买 nike

我在抽象类中有一个抽象泛型方法:

/**
* @param <Value>
*/
public abstract class TestAbstract<Value> {

public abstract <Value> void test(Value value);

}

现在我从这个类扩展并实现抽象泛型方法 - 这是我的尝试,但这显然是错误的。

public class Impl extends TestAbstract<Integer> {

@Override
public <Integer> void test(Integer value) {

// value is instanceOf as java.lang.Object and not java.lang.Integer !

}

}

test() 中,value 被视为 Object 而不是 Integer...

如何重写此方法,以便我被迫使用“整数”类?

谢谢!

最佳答案

您正在用具体类型替换类型参数。您可能打算做这样的事情:

public abstract class TestAbstract<V> {
public abstract void test(V value);
}

(请注意,按照惯例,类型参数应为单个大写字母(如果可能)

现在,当您创建此类的具体实现时,您可以用具体类型替换该类型参数:

public class Impl extends TestAbstract<Integer> {

@Override
public void test(Integer value) {
// Here, "value" is an Integer
}
}

在这种情况下,方法本身不需要类型参数,因为它是在周围上下文中(即在类中)定义的。

关于java - 实现抽象泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27875861/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com