具有原始值(或双精度)的Java泛型`capture <!-?->`

时间:2018-07-23 17:55:26

标签: java android generics

我正在使用一个图表库,其中包含以下方法声明:

public float getPixelValueForUserValue(T userValue)...

我知道我应该传入一个泛型类型,如果我在代码中放置一个断点并仅使用double值执行此方法,则代码将执行并很高兴(我认为这是可以预期的,因为在那里代码似乎没有问题。
可悲的是,如果我尝试编写已执行的代码行(例如myobject.getPixelValueForUserValue(2.0)),则编译器会抱怨,寻找capture<?>,我只需要将其加倍即可。编译器产生的错误是

  

错误:(729,95)错误:不兼容的类型:Double>无法转换为CAP#1   CAP#1是新鲜的类型变量:   CAP#1扩展了可比性,因为捕获了``''

如果我尝试更深入地了解他们的T是什么,那么正如预期的那样,它是一个通用类-但它表示T extends Comparable<T>,所以我认为这是我通过的任何类到它应该扩展Comparable,因此我尝试通过new Double(myVar)传递它,因为Double实现了Comparable,但是遗憾的是它也失败了,并带有相同的错误...

我尝试创建匿名方法(可能不正确)以返回所需的值,我尝试创建扩展一件事或另一件事的类。我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

如建议的那样,我需要从Axis撤出-我误解了场景,并认为我需要抓住Axis,然后尝试抓住像素值。键入了“轴”,并且没有显示编译器警告(并且根据他们的支持论坛)也不是正确的方法。

NumberAxis xAxis = (NumberAxis) chart.getXAxis();
double pixelX = xAxis.getPixelValueForUserValue(targetX);