我在我的GWT DialogBox中有了一个带有计时器的调整大小的处理程序,它在浏览器窗口中将这个框居中。它使用lambda函数:
public class MyBox extends DialogBox {
private HandlerRegistration resizeHandler = null;
private static final int TIME_GAP = 500;
private Timer resizeTimer = new Timer() {
@Override public void run() {
center();
}
};
@Override
protected void onLoad() {
addResizeListener();
}
@Override
protected void onUnload() {
resizeTimer.cancel();
resizeHandler.removeHandler();
}
private void addResizeListener() {
this.resizeHandler = Window.addResizeHandler(
(ResizeEvent event)->{resizeTimer.schedule(TIME_GAP);});
}}
当我编译它时,我得到:
[ERROR] Line 117: Lambda expressions are allowed only at source level 1.8 or above
[ERROR] Hint: Check the inheritance chain from your module; it may not be inheriting a required module or a module may not be adding its source path entries properly我有Eclipse露娜4.4.2构建20150219-0600,这应该是用Java 8开箱即用的。
还是会给我带来错误。有什么想法吗?非常感谢!
发布于 2018-02-12 21:07:08
错误就在这里:
private void addResizeListener() {
this.resizeHandler = Window.addResizeHandler((ResizeEvent event)->
{resizeTimer.schedule(TIME_GAP);});}通常,它应该用红色高亮显示,根本不允许编译。但是,不知怎么的,它设法忽略了它,并开始编译。lambda函数的正确形式是:
private void addResizeListener() {
this.resizeHandler = Window.addResizeHandler(event ->
{resizeTimer.schedule(TIME_GAP);});}放弃所有最新的更改和git pull从最后一点解决了这一情况。我不明白为什么它以前没有用红色突出显示。
https://stackoverflow.com/questions/48754280
复制相似问题