gpt4 book ai didi

javac:需要不兼容的类型:类名 找到:类名

转载 作者:行者123 更新时间:2023-11-29 05:49:32 25 4
gpt4 key购买 nike

以下代码在 JDK6 中编译。在 JDK7 中因编译错误而失败。

java: incompatible types
required: com.jdk7.IExporter<O>
found: com.jdk7.IExporter<java.lang.Object>

编译器是 1.7.0_10,来自 Oracle。

$ javac -version
javac 1.7.0_10

代码

package com.jdk7;

public class GenericIn7 {

public <O> IExporter<O> getExporter(Class<O> objType) {
final IExporter<O> localExporter =
determineExporter(getPersistentInterface(objType));
return null;
}

private <O> IExporter<O> determineExporter(Class<O> persistentInterface) {
return null;
}

protected <O, I extends O> Class<O> getPersistentInterface(Class<I> clazz) {

return null;
}
}

class IExporter<T> {
}

[为了完整起见,用 IExporter 替换 generic 和其他更改使其编译。 ]

最佳答案

看起来类型推断并没有像您预期的那样在这一行工作:

final IExporter<O> localExporter = 
determineExporter(getPersistentInterface(objType));

我觉得问题是什么O正在解决 getPersistentInterface() .它被调用就像你调用了this.<Object, O>getPersistentInterface(...) .如果你是明确的:

final IExporter<O> localExporter = 
determineExporter(this.<O, O>getPersistentInterface(objType));

它工作正常。

关于javac:需要不兼容的类型:类名<TYPEPARAM> 找到:类名<java.lang.Object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14451863/

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