如何为假抽象方法创建Java注释?

时间:2016-12-09 21:58:19

标签: java annotations bridj

我说假,因为该方法未被声明为抽象,但它没有实现。

我正在尝试修复使用BridJ引入的错误。 BridJ使用自定义注释来注释Android Activity中的方法。该方法具有以下特征:

@Library("example")
public static void helloLog(Pointer<Byte> logThis);

但编译器在这两行代码上抱怨Missing method body, or declare abstract。所以我决定查看注释的源代码,即:

@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR})
public @interface Library {

    /**
     * Name of this library.
     */
    String value();

    /**
     * Names of libraries that need to be loaded before this library is loaded
     */
    String[] dependencies() default {};

    String versionPattern() default "";
}

在阅读Java Custom Annotations之后,我认为注释的定义没有任何问题。为此,我在helloLog()方法中添加了一个实现。

public static void helloLog(Pointer<Byte> logThis) {}

之后错误就消失了。我没想到它会解决这个问题,但是FWIW,它允许我构建和运行,但它在启动时崩溃,因为我计划调查NullPointerException

更新1

@ thomas-kläger和其他人建议将native关键字添加到helloLog。我试过了,但后来我得到了这个运行时错误:

java.lang.UnsatisfiedLinkError: No implementation found for void connectedsolutions.cummins.com.bridjtest.MainActivity.helloLog(org.bridj.Pointer) (tried Java_connectedsolutions_cummins_com_bridjtest_MainActivity_helloLog and Java_connectedsolutions_cummins_com_bridjtest_MainActivity_helloLog__Lorg_bridj_Pointer_2)

我将更多地阅读文档和示例。感谢。

0 个答案:

没有答案