在调用参数为... 并根据需要Supplier<O>
输入lambda的函数时。我有以下错误适用并阻止 ide (eclipse-oxygen) 构建项目
Internal compiler error: java.lang.UnsupportedOperationException: no glb for [public abstract class java.lang.Number
父方法类似
Foo foo1;
Foo foo2;
public < O > O run( Function< Foo, O > func ){
if( func == null )
return null;
return firstNotNull( () -> func.apply( foo1 ),
() -> func.apply( foo2 ) );
}
和子方法:
@SafeVarargs
public static final < O > O firstNotNull( Supplier< O >... funcs ){
for( Supplier< O > func : funcs ){
O obj = func.get();
if( obj != null )
return obj;
}
return null;
}
回到给出的错误,类中没有提到的类号;然而,一个核心 java 类在编译时出现错误。
但是,当将父级编辑为
public < O > O run( Function< Foo, O > func ){
if( func == null )
return null;
return firstNotNull( (Supplier< O >) () -> func.apply( foo1 ),
(Supplier< O >) () -> func.apply( foo2 ) );
}
error
不再发生,IDE 成功构建并遵守。我正在发布这篇文章,因为除了建议从 eclipse 中删除损坏的构建器之外,我在网上找不到类似的帖子,这对这个问题的变体不起作用;因此,我正在记录这有助于其他有类似问题的开发人员。
我还要求找出发生了什么错误以及为什么会发生?
PS8.0_151
我注意到这只是在 java 更新到from后才成为问题8.0_144
。
更新:
我已将 java 版本从 8u151 更改为 8u152 并尝试了 9,但该工作区中仍然存在错误。但是,我在eclipse中创建了一个新项目来重新创建错误,即使我更改了java版本,我也没有成功。结论:eclipse似乎抛出了错误,Java Builder和Spring Project Builder都抛出了同样的错误。