0

我有一些代码使用 javax.measure API 来计算被跟踪资产的速度。我将 Quantity 对象作为值传递给 JTable 渲染器,通用参数 (Speed) 已被删除。即使有 Speed 参数,我也无法对此进行反思以确定 Quantity 的类型。如何确定数量是速度?当它是速度时,我想以不同的方式呈现值。我目前有滥用 asType() 方法的代码,但这似乎不应该如何使用 API。

// FIXME: This seems hokey. There should be a better way.
public static <C extends Quantity<C>> boolean isOfType(final Quantity<?> q, final Class<C> c) {
    try {
        q.asType(c);
        return true;
    } catch (final ClassCastException e) {
        return false;
    }
}

public static boolean isSpeed(final Quantity<?> q) {
    return isOfType(q, Speed.class);
}
4

1 回答 1

1

我想说,这可能是你目前在 Java 中可以做的最好的事情,因为与 C# 甚至 JVM 上的 Kotlin 等语言相比,泛型类型极其有限。

虽然在这个方向上听起来很有希望,但迄今为止,瓦尔哈拉项目在第一次预览中提供的内容和整体速度方面都非常令人失望。只有时间会证明,它是否会带来有用的东西,尤其是现在谷歌刚刚在 SCOTUS 上赢得了对甲骨文的 Java 诉讼。虽然这对整个开源社区来说是一个非常好的迹象,但如果甲骨文未能按照希望的方式通过对 Android 收取许可费来将其货币化,它可能会进一步降低甲骨文的贡献。

因此,虽然这种方法可能看起来有点奇怪和不直观,但恐怕这就是你目前所能做的。我们已经对这些东西进行了很长时间的试验(在某些情况下超过 10 年),到目前为止,Java 语言所允许的仅此而已。

于 2021-04-05T17:56:37.480 回答