我正在寻找一种将long或long转换为从Number派生的类型的方法:
public class IdentityConverter<ConvertedT extends Number> implements IBitcodeConverter<ConvertedT> {
public IdentityConverter() {
}
@Override
public ConvertedT FromBitcode(Long theBitcodeVal) {
return new ConvertedT(theBitcodeVal.longValue());
}
@Override
public Long ToBitcode(ConvertedT theConvertedVal) {
// TODO Auto-generated method stub
return theConvertedVal.longValue();
}
}
问题在于FromBitcode
方法。当前代码不起作用。如何从Long
中获取ConvertedT
,它是一个数字
?当然有一个简单的方法可以做到这一点。。。
new ConvertedT
不起作用,因为ConvertedT
是一个类型变量。
你需要提供一个类似于的函数
public class IdentityConverter<ConvertedT extends Number> implements IBitcodeConverter<ConvertedT> {
private final Function<Long, ConvertedT> fn;
public IdentityConverter(Function<Long, ConvertedT> fn) {
this.fn = fn;
}
@Override
public ConvertedT FromBitcode(Long theBitcodeVal) {
return fn.apply(theBitcodeVal);
}
// ...
}
我在我的Java程序中写了这个函数: 这就是我所说的: 它是有效的,但我觉得我应该能够省略第一个参数,并从返回类型(结果被分配到的类型)推断出它。这可能吗?如果是,语法是什么?
问题内容: 背景 我曾经写过这种方法: 应该这样称呼它: 这很好用(尽管我在研究当前容易出错的问题时在这里的答案中已经看到)。 目前的情况 无论如何,现在我正在编写以下代码(在扩展javax.servlet.jsp.tagext.TagSupport的类中): 目的是可以这样称呼: 我的评估方法中的代码显然不起作用。的第二个参数应该是Class对象。这导致我: 我的问题 如何获得通用(返回)类型的
问题内容: 我想创建一个比较数字的方法,但可以有一个输入,它是Number的任何子类。 我已经考虑过以以下方式进行此操作… 在进行比较之前,我需要获取实际的原始指令,Number类具有为每个原始指令检索此指令的方法,但是我想选择一种正确的方法。 这可能吗? 干杯 问题答案: 不幸的是,如果不依靠if / else块,就无法从包装器类型中获取原始类型。 问题在于,不可能以通用方式实现这种方法。以下是
我想使返回数据类型的的函数与传入的参数的数据类型相同。例如,我会这样调用函数: 因为我将一个传递给,所以它返回了一个
我试图创建一个Java方法,它接受一个对象类型和它应该转换成的数据类型。 例如,如果我应该能够返回一个值1作为Int或双根据需要。我使用类传递数据类型作为参数。 问题:如何使方法泛型以接受基于输入参数的返回类型? 下面的代码只是一个示例,它可能在语法上不正确,用于解释我的问题。
我想让一个函数返回一个保证实现两个接口的对象。编译时不一定知道确切的对象。我的代码看起来像: 在尝试编译时,我遇到以下错误: 你好世界java:13:错误:不兼容的类型:C无法转换为T 返回新的C() ^ 其中T是一个类型变量: T扩展了方法f(布尔值) HelloWorld中声明的a,B。java:14:错误:不兼容的类型:D无法转换为T 返回新的D() ^ 其中T是一个类型变量: T扩展了方法