小编And*_*son的帖子

Java反射:实现接口并传递给另一个类

我不确定Java是否可以实现,但我正在尝试实现一个在编译时不可用的接口**并将其作为该接口的对象传递给另一个类.假设我有一个界面,如:

public interface MyInterface {
    void onReceive(int i);
}
Run Code Online (Sandbox Code Playgroud)

和另一类如:

public void MyClass {
    ArrayList<MyInterface> listenerList = new ArrayList<MyInterface>();

    public void add(MyInterface m) {
        listenerList.add(m);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果它们在编译时可用,我将使用它们:

blah = new MyInterface() {
    public void onReceive(int i) {
        System.out.println("BLAH");
    }
}

MyClass mc = new MyClass();
myClass.add(blah);
Run Code Online (Sandbox Code Playgroud)

我想知道如果前两个类只在运行时可用,是否有办法编写与上面相同的代码.

提前致谢!

**我正在尝试使用Android的ROM中的框架库,但它是在dalvik字节码中,所以我不能用它来编译.

更新:这是我用来测试解决方案的一些示例代码:

文件a/IIMSListener.java

// Excerpt from decompiled class

public interface IIMSListener
{
    void onReceive(int p0, int p1/*, IMSParameter p2*/);
}
Run Code Online (Sandbox Code Playgroud)

文件a/IMSRemoteListenerStub.java

// Excerpt from decompiled class

import java.util.concurrent.*;
import java.util.*; …
Run Code Online (Sandbox Code Playgroud)

java reflection android interface dalvik

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

CMake:如何在输入改变时使add_custom_command执行?

对于我的项目,我想运行一个生成安装文件的命令(换句话说,生成的文件只是一个数据文件,而不是源代码).

我目前在我的CMakeLists.txt中有以下内容

add_custom_command(
    OUTPUT outputfile.txt
    COMMAND dosomething ${CMAKE_CURRENT_SOURCE_DIR}/inputfile.txt
                        ${CMAKE_CURRENT_BINARY_DIR}/output.txt
    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/inputfile.txt
)

add_custom_target(
    run_gen_command
    ALL
    DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/output.txt
)

install(
    FILES ${CMAKE_CURRENT_BINARY_DIR}/output.txt
    DESTINATION ${CMAKE_INSTALL_DATADIR}/somewhere
)
Run Code Online (Sandbox Code Playgroud)

这工作正常,但因为ALL传递给add_custom_target(),每次运行时命令都会执行make.

有没有什么办法可以改变这个命令,只有当输入文件改变时才运行命令?该命令可能需要一段时间才能完成,因此理想情况下,除非需要,否则不会运行该命令.

提前致谢!

cmake

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

我可以在运行时更改emacs设置吗?

我是Emacs文本编辑器的新手,刚刚开始自定义我的~/.emacs文件.我想知道在运行时是否可以更改Emacs设置.例如,如果我将以下内容放入我的~/.emacs文件中:

(show-paren-mode 1)
Run Code Online (Sandbox Code Playgroud)

当Emacs运行时,我可以通过键入来执行相同的操作:

M-x然后scroll-step1.

当我想做这样的事情时,为什么这不起作用:

(setq scroll-step 1)
Run Code Online (Sandbox Code Playgroud)

当我输入:

M-x然后setq,

我得到的只是(no match).我必须在这里理解一些东西.

emacs

3
推荐指数
1
解决办法
419
查看次数

标签 统计

android ×1

cmake ×1

dalvik ×1

emacs ×1

interface ×1

java ×1

reflection ×1