有没有办法在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。
答案 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)。