gpt4 book ai didi

java - 如何确保实现中泛型方法的类型?

转载 作者:行者123 更新时间:2023-12-02 12:02:28 25 4
gpt4 key购买 nike

这是我第一次在这里提问,所以我希望我正确地发布了所有内容。

我正在做我的作业,但我对这个问题有点困惑。有四类形状(圆形、圆锥形、球形和矩形),它们都实现了 GeometricShape 接口(interface)......

public interface GeometricShape {
public void describe();
}

问题是要向接口(interface)添加一个名为 supersize() 的新方法,该方法将采用当前形状并使用泛型返回大小为两倍的相同类型的形状。提示说将界面概括为这样的开始......

public interface GeometricShape<T extends GeometricShape<T>> {
public void describe();
public T supersize();
}

使得T只能是几何形状。但是当这样做时, Rectangle.supersize() 有可能返回一个圆形。我怎样才能通过仅修改接口(interface)代码来避免这种情况发生(例如 Rectangle.supersize() 只能返回 Rectangle)?

最佳答案

技巧不在于接口(interface)定义,而在于类声明。

对于矩形,定义如下:

public class Rectangle implements GeometricShape<Rectangle> {
public void describe() {// do stuff}
public Rectangle supersize() {
return new Rectangle()
//this should fail since you have specified T
//return new Circle()
}
}

关于java - 如何确保实现中泛型方法的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47149364/

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