添加新的类变量java + getter / setter方法而不编辑类

时间:2017-05-16 03:12:31

标签: java

有没有办法在java中创建新的类变量或方法而不编辑类java

示例:

我有班级人员

public class Person {

    private String name;
    private String address;

    public String getName() {
        return name;
    }

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

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

在主要课程中我这样处理:

    Person personData = new Person();
    personData.setName("My Name");
    personData.setAddress("Address");

    List<Person> person = new ArrayList<Person>();
    person.add(personData);

我想在List中添加新的人物变量 并拥有setNo();getNo();

因此列表索引[0]的人员具有属性No,Name和Address,而不首先编辑类Person。

2 个答案:

答案 0 :(得分:1)

Java中没有办法在不更改类源代码的情况下向类添加方法。

您唯一的可能性是从此类扩展(通过创建继承自Person的子类)或创建包含Person对象的全新类。

第一个概念叫做继承;第二个组成。你可以找到关于&#34;一个与另一个的讨论&#34;例如here

但实质上答案是:退一步读一本关于Java的好书。

答案 1 :(得分:0)

我可能会创建另一个扩展Person的类。

import java.util.ArrayList;
import java.util.List;

public class PersonNo extends Person {
    public static void main(String[] args) {
        PersonNo personData = new PersonNo();
        personData.setName("My Name");
        personData.setAddress("Address");

        List<PersonNo> person = new ArrayList<>();
        person.add(personData);
    }

    public void setNo(int n) {
        this.no = n;
    }

    public int getNo() {
        return this.no;
    }

    private int no;
}

这要求您将列表类型更改为&#34; PersonNo&#34;并添加&#34; PersonNo&#34; s,但它将为您提供所需的功能。如果使用&#34; Person&#34;创建列表,则可以添加&#34; PersonNo&#34;但除非您投射&#34; Person&#34;否则您将不会拥有setNo / getNo。进入(PersonNo)。