Java 返回新实例的静态方法?

Java 返回新实例的静态方法?,java,Java,我的任务是制作这个静态方法: createPerson–此方法根据姓名、姓氏、姓名和年龄创建新的人员。然后返回该人员的新实例 但由于我们刚刚学习了静态方法,我感到困惑 以下是驾驶员等级: public class FriendlyPeople { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("Let's meet some frien

我的任务是制作这个静态方法: createPerson–此方法根据姓名、姓氏、姓名和年龄创建新的人员。然后返回该人员的新实例

但由于我们刚刚学习了静态方法,我感到困惑

以下是驾驶员等级:

public class FriendlyPeople {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("Let's meet some friendly people");
    Person[] people =
            {
                    new Person("Tom Jones", 29),
                    new Person("Bob Jones", 40),
                    new Person("Alf Pererdur", 10),
                    new Person("Ripley Carver",20),
                    new Person("Britton Raven",47),
                    new Person("Joyce Elihu",93),
                    new Person("Kevin Jody",63),
                    new Person("Ben Jayce", 32),
                    new Person("Emerson Ezra",27),
                    new Person("Yorick Fearghal",44),
                    new Person("Kim Yori",23),
                    new Person("Sheldon Ambrose", 36),
                    new Person("Leonard Damion",33),
                    new Person("Agam Saburou", 53),
                    new Person ("Webster Chaz", 46),
                    new Person("Carol Dudel", 31)
            };
    Person p1 = new Person("Dacre Casey", 29);
    System.out.println("Testing the initial person");
    System.out.println(p1.toString());
    System.out.println();


    System.out.println("Adding one friend");
    p1.addFriend(Person.createPerson("Wetzel Edmund", 62));
    p1.printFriends();
    System.out.println();

    System.out.println("Adding a new friend using the overloaded operator");
    p1.addFriend("Judith Katheryne", 32);
    p1.printFriends();
    System.out.println();

    System.out.println("Adding a group of friends that exceeds the number of friends.");
    p1.addFriends(people);
    p1.printFriends();
    System.out.println();

    System.out.println("Removing a friend "+people[0].toString());
    p1.removeFriend(people[0]);
    p1.printFriends();
    System.out.println();


}
这是我目前的代码:

public class Person {
private String name;
private int age;
private Person[] friends;

//Constructor for person
public Person(String name, int age)
{
    this.name = name;
    this.age = age;
}
//Constructor array for person
public Person()
{
    this.friends = new Person[10];
}

//Accessors
public String getName() {return name;}

public int getAge() {return age;}

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

public void setAge (int age)
{
    if (age < 0)
    {
        System.out.println("That is an invalid age");
        return;
    }
    this.age = age;
}

//Methods

public static String createPerson (String s)
{

}

public String toString() { return name + " " + age; }

public boolean equals (Person person) {
    return this.name.equalsIgnoreCase(person.getName()) && this.age == person.getAge();
}

//Add friend method
public void addFriend(Person person)
{
    for (int column = 0; column < friends.length; column++)
    {
        if (friends[0] != null || (friends[column] == null && friends[column-1] != null))
        {
            friends[column] = person;
        }
        if (friends[9] == person) {
            System.out.println("Friends list is full!");
        }
    }
}
public static String createPerson (String s)
{

}

此时请注意,静态方法与实例化的类没有关联。要调用静态方法,请执行以下操作:

    Person.createPerson("first", "last", 20);
请注意,对方法的调用使用了类名,而不是引用Person类型对象的变量。要创建一个方法,您可以像以前一样使用static这个词。从静态方法中,不能访问Person的非静态类字段。将逻辑放在静态方法中,就像放在其他方法中一样。 在不判断任何其他代码的情况下,说明会告诉您这样做:

    public static Person createPerson (String first, String last, int age)
    {
        return new Person(first, last, age);
    }

首先,如果您使用的是工厂(静态初始值设定项),那么应该将实例设置为私有

其次,应该在两个构造函数上实例化好友列表,或者使用
this()
获取另一个构造函数(称为重载),但我建议您使用ArrayList。若你们不知道如何使用它,那个么使用一个变量来跟踪你们有多少朋友需要使用它作为指针

我强烈建议您研究收集框架。数组列表可以很容易地完成您想要的任务

第三,如果你正在添加已经存在的朋友,你应该从你得到的列表中获得它。如果不存在,则应将其添加到列表中。我建议使用HashMap,但ArrayList就足够了。这里是对代码的重新调制:

公共类友好型人物{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
System.out.println(“让我们认识一些友好的人”);
ArrayList people=新建ArrayList();
人员[]人员列表={
Person.createPerson(“汤姆·琼斯”,29岁),
Person.createPerson(“鲍勃·琼斯”,40岁),
Person.createPerson(“Alf Pererdur”,10),
Person.createPerson(“Ripley Carver”,20岁),
Person.createPerson(“Britton Raven”,47),
Person.createPerson(“Joyce Elihu”,93),
Person.createPerson(“Kevin Jody”,63岁),
Person.createPerson(“Ben Jayce”,32岁),
Person.createPerson(“Emerson Ezra”,27),
Person.createPerson(“Yorick Fearghal”,44),
Person.createPerson(“Kim Yori”,23岁),
Person.createPerson(“Sheldon Ambrose”,36岁),
Person.createPerson(“Leonard Damion”,33岁),
Person.createPerson(“Agam Saburou”,53岁),
Person.createPerson(“韦伯斯特·查兹”,46),
Person.createPerson(“卡罗尔·杜德尔”,31岁)
};
people.ensurecapity(peopleList.length);
for(int i=0;i
至于
类:

公共类人物{
私有字符串名称;
私人互联网;
私人ArrayList朋友;
//个人建造师
私人(字符串名称,整数年龄){
这个();
this.name=名称;
这个。年龄=年龄;
}
//person的构造函数数组
私人(){
this.friends=newarraylist(10);
}
//访问者
公共字符串getName(){return name;}
public int getAge(){return age;}
//突变子
公共void集合名(字符串名){
this.name=名称;
}
公共无效设置(整数){
如果(年龄<0){
System.out.println(“这是一个无效年龄”);
返回;
}
这个。年龄=年龄;
}
//方法
@凌驾
公共字符串toString(){return name+“”+age;}
公共布尔等于(个人){
返回this.name.equalsIgnoreCase(person.getName())和&this.age==person.getAge();
}
//添加好友方法
公众朋友(人){
添加(人);
}
公众朋友(ArrayList人){
朋友。添加所有(人);
}
公众朋友(人[]人){
for(int i=0;i