嗨,我在泛型类型和从IDE得到的警告方面有问题。我有一个保存泛型类型值的类:
public class Result <OUT>{
private final OUT outputValue;
public OUT getOutputValue() {
return outputValue;
}
}
我有一个抽象类:
public abstract class CustomSource {
public abstract <T> SourceFunction<T> getSource();
}
以及扩展它的类:
public class OtherCustomSource extends CustomSource {
@Override
public SourceFunction<Result<MyEvent>> getSource() {
...some code...
}
}
IDE警告我:未经检查的重写返回类型需要未经检查的转换。我错过了什么?
public abstract <T> SourceFunction<T> getSource();
这不是你打算做出的promise。这表示“对于每个T
,我保证可以获得SourceFunction类型的源代码
public SourceFunction<Result<MyEvent>> getSource();
它说“具体来说,我可以给你一个类型
结果的来源”
如果希望
getSource
只返回一个特定类型,则泛型应该位于CustomSource
类中,而不是getSource
函数中。
public abstract class CustomSource<T> {
public abstract SourceFunction<T> getSource();
}
public class OtherCustomSource extends CustomSource<Result<MyEvent>> {
@Override
public SourceFunction<Result<MyEvent>> getSource() {
...some code...
}
}
然后将
OtherCustomSource
用作CustomSource是有意义的
下面的代码来自一个名为ButterKnife的Android库。我正在弄清楚它是怎么工作的。 我试图重新创建此函数的行为: 和用法: 但是异常并非永远不会被捕获,而是在调用方法时在行中抛出。为什么? 还有,这到底是如何工作的?该方法如何知道要转换到什么?
我想通过TypeScript泛型定义函数返回类型。所以R可以是我将定义的任何东西。 <代码>。。。许诺 错误:(29,9)TS2322:类型“字符串”不可分配给类型“R”。“字符串”可分配给类型“R”的约束,但“R”可以用约束“{}”的不同子类型实例化。
我在我的Java程序中写了这个函数: 这就是我所说的: 它是有效的,但我觉得我应该能够省略第一个参数,并从返回类型(结果被分配到的类型)推断出它。这可能吗?如果是,语法是什么?
问题内容: 背景 我曾经写过这种方法: 应该这样称呼它: 这很好用(尽管我在研究当前容易出错的问题时在这里的答案中已经看到)。 目前的情况 无论如何,现在我正在编写以下代码(在扩展javax.servlet.jsp.tagext.TagSupport的类中): 目的是可以这样称呼: 我的评估方法中的代码显然不起作用。的第二个参数应该是Class对象。这导致我: 我的问题 如何获得通用(返回)类型的
我想让一个函数返回一个保证实现两个接口的对象。编译时不一定知道确切的对象。我的代码看起来像: 在尝试编译时,我遇到以下错误: 你好世界java:13:错误:不兼容的类型:C无法转换为T 返回新的C() ^ 其中T是一个类型变量: T扩展了方法f(布尔值) HelloWorld中声明的a,B。java:14:错误:不兼容的类型:D无法转换为T 返回新的D() ^ 其中T是一个类型变量: T扩展了方法