是否可以在vala类中编写自定义属性或注释,例如C#或Java?

问题描述 投票:1回答:1

这个问题暗示了如何减少样板代码或添加自定义功能,例如在Java中

@Setter(AccessLevel.PROTECTED) private String name;

或Jackson注释@JsonProperty如何实现或模拟此功能?谢谢

annotations attributes vala
1个回答
0
投票

不,您现在无法创建自定义属性。对于属性,可以使用下一个语法:

 public string name { get; protected set; default = "42"; }

GObject类型的系统还支持Json序列化/反序列化的属性。这里是一个小例子(valac文件--pkg json-glib-1.0):

public enum MyEnum {
    FOO, BAR, FOOBAR
}

public class MyObject : Object {
    public string str { get; set; }
    public MyEnum en { get; set; }
    public int num { get; set; }

    public MyObject (string str, MyEnum en, int num) {
        this.str = str;
        this.num = num;
        this.en = en;
    }
}

public static int main (string[] args) {
    MyObject obj = new MyObject ("my string", MyEnum.FOOBAR, 10);
    Json.Node root = Json.gobject_serialize (obj);

    // To string: (see gobject_to_data)
    Json.Generator generator = new Json.Generator ();
    generator.set_root (root);
    string data = generator.to_data (null);

    // Output:
    // ``{"str":"my string","en":2,"num":10}``
    print (data);
    print ("\n");

    return 0;
}

您可以在ValaDoc上找到更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.