1

在我的主类中,我有一个静态方法,我将数组传递到其中。这是一个静态方法,因为如果我想从主类体传递一些东西给这个方法,它必须是静态的。在一个单独的类中,我有一系列 getter 和 setter(必须是非静态的)。

如何传递我的静态数组并使用非静态 getter 和 setter?

编辑-在 arraySearch 方法中...我无法传入 Person 数组并访问 Person 类中的 getter

公共类主要{

public static void main(String[] args) {
    Person One = new Person("Alice","Foo", 22, false);
    Person Two = new Person("Alice", "Foo",22, false);
    Person Three = new Person("Bob","Bar",99, false);
    Person Four = new Person("Joe","Blogs",64, false);
    Person Five = new Person("Jane", "Joe",42, false);

    Person [] People = {One,Two,Three,Four,Five};
    printArray(People);

}

public static void printArray(Person [] People)
{
    for(int i=0;i<People.length;i++)
    {
        System.out.println(People[i]);
    }
}


public void arraySearch(Person [] People)
{
    for(int i=0;i<People.length;i++)                                //Searches the Array of Objects
    {
        String firstName = Person.getFirstName();
        String secondName=Person.getSecondName();
        if((firstName.equals("Joe")&&secondName.equals("B" +        //Searches for Joe Blogs and Jane Joe
                "logs"))|| ((firstName.equals("Ja" +
                        "ne")&&secondName.equals("Joe"))))
        {
            int age=Person.getAge();
            Person.setAge(age+1);                                   //Increments Age by 1
        }
    }
}

}

公共类人{

private String mfirstName;
private  String msecondName;
private  int mage;
private boolean misRetired;

public Person(String firstName,String secondName,int age, boolean isRetired)
{
    mfirstName=firstName;
    msecondName=secondName;
    mage=age;
    misRetired=isRetired;
}

//GETTERS 

public  String getFirstName()
{
    return mfirstName;
}
public  String getSecondName()
{
    return msecondName;
}
public  int getAge()
{
    return mage;
}
public  boolean getRetired()
{
    return misRetired;
}

//SETTERS

public  void setFirstName(String firstName)
{
    mfirstName=firstName;
}
public  void setSecondName(String secondName)
{
    msecondName=secondName;
}
public  void setAge(int age)
{
    mage=age;
}
public  void setRetired(boolean isRetired)
{
    misRetired=isRetired;
}

//STRING

public String toString()
{
    return (mfirstName+"-"+msecondName+"-"+mage+"-"+misRetired);
}

}

4

4 回答 4

1

这是一个非常基本的 Java 问题。您需要从静态方法创建包含 setter/getter 的对象实例。您还可以在此对象的 setter 中传递静态数组。然后你应该能够调用那些 getter/setter 方法。

public class Main
{

     public static void main(String[] args)
     {
         MyClass myclass = new MyClass();
         myclass.setArgs(args);
         System.out.println(myclass.getArgs());
     }
}

public class MyClass
{
     private String[] args;

     public String[] getArgs()
     {
         return args;
     }

     public void setArgs(String[] args)
     {
         this.args= args;
     }
}
于 2013-03-06T18:27:06.903 回答
0

来自 vmoksha 的 Sunil kumar

您要求更深入的导航只需创建特定的实例或在主类中创建 getter &and setter

于 2013-03-07T11:43:39.583 回答
0

Amit 的答案是正确的;这只是有更多信息,并且更符合您在问题中描述的情况。

你的基本前提“它是一个静态方法,因为如果我想从主类体传递一些东西给这个方法,它必须是静态的。” 是错的。将数组传递给的方法不需要是静态的。这是一些代码:

public final class Main
{
    private static final String[] staticOTron =
    {
        "one",
        "two",
        "three"
    };

    public static void main(final String[] args)
    {
        String[] hootBerrySause;
        Tool tool = new Tool();

        tool.setStaticOTron(staticOTron);

        hootBerrySause = tool.getStaticOTron();

        for (String value : hootBerrySause)
        {
            System.out.println("Value: " + value);
        }
    }
}

// this can be in a different file.
public final class Tool
{
    private static String[] staticOTron;

    public void setStaticOTron(final String[] newValue)
    {
        staticOTron = newValue;
    }

    public String[] getStaticOTron()
    {
        return staticOTron;
    }
}


于 2013-03-06T18:35:37.537 回答
0

您必须使用 getter 从类中创建一个对象实例。

于 2013-03-06T18:30:37.180 回答