Java 可能的eclipse错误
我正试图解决一个泛型问题。但eclipse似乎在抱怨,而没有一个合理的抱怨 考虑以下方法Java 可能的eclipse错误,java,generics,compiler-errors,eclipse-oxygen,Java,Generics,Compiler Errors,Eclipse Oxygen,我正试图解决一个泛型问题。但eclipse似乎在抱怨,而没有一个合理的抱怨 考虑以下方法 public static <FR extends FilterResult, T> List<? super WrappedFilterResult<? super T, FR>> filter(String check, Collection<T> elements, Function<? super T, String> converter,
public static <FR extends FilterResult, T> List<? super WrappedFilterResult<? super T, FR>> filter(String check, Collection<T> elements, Function<? super T, String> converter, Filter<? extends FR> filter, ACComparator<? super WrappedFilterResult<? super T, ? super FR>> comparator)
{
// eclipse says 'filter' doesn't accept these arguments
return filter(check, elements, new ArrayList<>(), converter, filter, comparator);
// doing a self call will result in the same error?
// return filter(check, elements, converter, filter, comparator);
// calling without returning doesn't solve it either?
// filter(check, elements, converter, filter, comparator);
// return null;
}
// no complaints here
public static <FR extends FilterResult, T, C extends Collection<? super WrappedFilterResult<? super T, FR>>> C filter(String check, Collection<T> elements, C result, Function<? super T, String> converter, Filter<? extends FR> filter, ACComparator<? super WrappedFilterResult<? super T, ? super FR>> comparator)
{
// content
}
提交给Bugzilla
- 螺纹连杆1位于
- 螺纹连杆2位于
- 似乎这就是问题所在。At list Idea不会显示该代码上的任何错误
问题在于该行中的
新ArrayList()
返回过滤器(检查、元素、新ArrayList()、转换器、过滤器、比较器)代码>
如果我们将其替换为result
变量,定义为
List我假设这是一个EclipseJDT编译器错误,尽管我没有咨询JLS,也不想深入研究它
我的假设有三个原因:
你的代码
我希望用自己的参数调用自己的方法应该编译
早些时候,我还遇到了一个案例
MCVE复制您的问题:
公共静态类FilterResult{}
公共静态类WrappedFilterResult扩展了FilterResult{}
公共接口伴随器{}
公共静电
空隙过滤器1(ACComparator请定义类型FilterResult
,WrappedFilterResult
和ACComparator
,只是基本类声明,我们不需要它们的实现。您是否也可以声明和初始化用于调用筛选方法的所有变量?@xtratic将它们添加到post@ZachPedigo我刚试过它不会改变任何令人窒息的事情enough@xtratic似乎应该是new ArrayListAlright,这证实了这一怀疑。那么我们如何使用Eclipse JDT编译器的语言/解决方法呢?如果这是可能的话?Eclipse似乎对ACComparator
有问题,所以我正在研究如何使用它帽子。非常感谢您快速深入的研究!这是eclipse bug报告的材料吗?如果是这样,而且没有人对此做任何事情,我将在接下来的一周(在整理完当前资料后)发布一份关于他们的bug跟踪器的报告。否则,请随时发送错误报告,这在我看来是一个非常重要的问题。您可能还包括我在这里链接的另一个问题,因为它有点相关。提交时感谢您的思考,但遗憾的是您的方法没有解决问题
public static class FilterResult {}
public interface Filter<FR extends FilterResult> {}
public static class WrappedFilterResult<T, FR extends FilterResult> extends FilterResult {}
public interface ACComparator<FR extends FilterResult> {}
public static class FilterResult {}
public static class WrappedFilterResult<T, FR extends FilterResult> extends FilterResult {}
public interface ACComparator<FR extends FilterResult> {}
public static <FR extends FilterResult, T>
void filter1(ACComparator<? super WrappedFilterResult<? super T, ? super FR>> comparator) {
// both compile fine with normal Java compiler
// but error with Eclipse JDT compiler (I'm using Eclipse 4.9.0)
filter1(comparator);
filter2(comparator);
}
public static <FR extends FilterResult, T>
void filter2(ACComparator<? super WrappedFilterResult<? super T, ? super FR>> comparator) {
}
public static
< FR extends FilterResult, T,
A extends ACComparator<? super WrappedFilterResult<? super T, ? super FR>> // <-- here
>
void filterSuccess(A comparator) {
// success!
filter1(comparator);
filter2(comparator);
}