小编Pat*_*vič的帖子

我可以在运行时查询 lambda 函数的生命周期吗?

我知道 Java 编译器会根据上下文和闭包为 lambda 函数生成不同的类。当我接收 lambda 作为参数(使用Consumer<>类)时,我可以知道参数的生命周期吗?

例如,我有以下Observable类,它保持对其观察的弱引用。

class Observable {
    private final List<WeakReference<Consumer<Object>>> observables = new ArrayList<>();
    private Object obj;

    public Observable(Object obj){
        this.obj = obj;
    }

    public void observe(Consumer<Object> cons){
        this.observables.add(new WeakReference<>(cons));
    }

    public void set(Object obj){
        this.obj = obj;
        // notify observes
        for(WeakReference<Consumer<Object>> cons : this.observables){
            if(cons.get() != null)
                cons.get().accept(this.obj);
            // clearing the non-existing observes from the list is ommited for simplicity
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我使用它如下。

public class Main {
    public static void …
Run Code Online (Sandbox Code Playgroud)

java lambda

7
推荐指数
1
解决办法
264
查看次数

CLion中的Refactring不起作用

我有重构的问题,例如在CLion中重命名类.CLion向我展示了重构窗口,但没有找到重构的东西.屏幕截图被附加.我还尝试将头文件添加到CMakeLists中,但没有成功.你知道我应该怎么做吗?
谢谢.
在此输入图像描述 在此输入图像描述

编辑:我正在使用Debian 8.2 x64和Cinnamon

c++ refactoring clion

5
推荐指数
1
解决办法
2130
查看次数

标签 统计

c++ ×1

clion ×1

java ×1

lambda ×1

refactoring ×1