Skip to content

注解WIP

你可以在类、数据模板、方法声明的最前方使用@+名字+只读参数列表的方式来为它们添加注解。注解是MNI框架的一部分,只存在于编译阶段。

MNI实现

java
//继承DataTemplateAnnotation,表示这是数据模板才能使用的注解
public class Example extends DataTemplateAnnotation {

    @SuppressWarnings("unused")
    public Example(String className) {
        super("Example", "mcfpp.annotation");
        //RESOVLE_FIELD表示解析成员阶段,在这个阶段完成后将注解注册到编译器中
        Project.INSTANCE.getStageProcessor()[Project.INSTANCE.getRESOVLE_FIELD()].add(() -> {
            GlobalField.INSTANCE.getLocalNamespaces().get("mcfpp.annotation").getField().addAnnotation("Example",this.getClass(), false);
            return null;
        });
    }

    //当编译器在注解解析阶段遇到这个注解的时候,会对这个注解修饰的数据模板做什么
    @Override
    public void forDataObject(@NotNull DataTemplate data) {
        System.out.println(data.getNamespaceID());
    }
}

mcfpp声明

WIP