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

添加新的类变量java+;不编辑类的getter/setter方法,java,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; }

有没有办法在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;
    }
}
在主要的I类过程中,如下所示:

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

    List<Person> person = new ArrayList<Person>();
    person.add(personData);
Person personData=new Person();
personData.setName(“我的名字”);
personData.setAddress(“地址”);
List person=new ArrayList();
person.add(personData);
我想在列表中添加新的person变量 并具有
setNo()
getNo()


因此,列表索引[0]让person具有属性No、Name和Address,而不首先编辑类person。

在Java中,如果不更改类源代码,就无法向类添加方法

唯一的可能是从这个类中进行扩展(通过创建从Person继承的子类),或者创建一个包含Person对象的全新类

第一个概念叫做继承;第二篇是作文。例如,您可以找到关于“一对另一”的讨论


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

我可能会创建另一个扩展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;
}
import java.util.ArrayList;
导入java.util.List;
公共类PersonNo扩展Person{
公共静态void main(字符串[]args){
PersonNo personData=新PersonNo();
personData.setName(“我的名字”);
personData.setAddress(“地址”);
List person=new ArrayList();
person.add(personData);
}
公共无效设置编号(int n){
这个。no=n;
}
公共int getNo(){
退回这个。否;
}
私人互联网号码;
}

这需要您将列表类型更改为“PersonNo”并添加“PersonNo”,但它将为您提供所需的功能。如果您使用“Person”创建列表,您可以添加“PersonNo”,但除非您将“Person”强制转换为(PersonNo),否则您将没有setNo/getNo。

您无法获取/设置不存在的属性(
No
)。Java是强类型的,这与此想法背道而驰。这个“No”属性是什么?你没有举例说明为什么你认为你需要这样的财产。也许有另一种方法可以实现您想要的功能,我在js库中集成了分页功能,在js中集成了java。。它只接受响应json列表,即使我的json响应中有许多属性。。我不知道为什么在分页中他们没有列表,只有开始、结束、当前页面和项目列表(来自java响应的列表),这就是为什么我不想编辑js,分页java,我不想列表中的对象没有类变量前者称为“继承”,后者称为“组合”,请参阅。@Andreas感谢您的想法,在我的回答中补充了这一点。