我想在类中使用方法设置和获取实例属性

时间:2016-08-17 12:13:46

标签: java class

我是Java的初学者。我有一个问题。

Foo.java

public class Foo {
    private String name;
    private int num;

    Foo(String name, int num) {
        this.name = name;
        this.num = num;
    }

    public String getName() {
        return this.name;
    }

    public int getNum() {
        return this.num;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setNum(int num) {
        this.num = num;
    }

}

Main.java

public class Main {
    public static void main(String[] args) {
        String name = "Tom";
        int num = 60;
        Foo bar = new Foo(name, num);
    }
}

我不想在Java上使用这种典型的类,而是希望使用getter()setter()方法设置和获取实例属性,如...

public void setter(String p) {
    this.p = p;
}

public String getter(String q) {
    return this.q
} 

我知道这些不起作用,但我想编写Java方法,例如在Python中遵循这些代码。

setattr(self, key, val)
getattr(self, key)

请你给我一些建议吗?

2 个答案:

答案 0 :(得分:4)

Java不支持属性。

执行此操作的唯一方法是通过访问者 mutator (获取/设置)方法,就像您在顶部所做的那样。

请参阅:does java have something similar to C# properties?

答案 1 :(得分:1)

您想要实现的目标可以使用反射作为下一步:

// get the field "key" from the class "Foo"
Field field = Foo.class.getField("key");
// make it accessible as it is a private field
field.setAccessible(true);
// set the value of this field to val on the instance self
field.set(self, val);

有关反思here

的更多详情