Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将一个类的值用于从main方法调用的另一个类_Java - Fatal编程技术网

Java 如何将一个类的值用于从main方法调用的另一个类

Java 如何将一个类的值用于从main方法调用的另一个类,java,Java,One.java public class One { String asd; public class() { asd="2d6" } public static void main(String args[]) { Two a = new Two(); } } public class Two { ArrayList<String>data; String asd; p

One.java

public class One {
    String asd;

    public class() {
        asd="2d6"
    }    

    public static void main(String args[]) {
        Two a = new Two();
    }
}
public class Two {
    ArrayList<String>data;
    String asd;

    public Two(String asd){
        this.asd=asd;
        data.add(this.asd);       
    }  
}
Two.java

public class One {
    String asd;

    public class() {
        asd="2d6"
    }    

    public static void main(String args[]) {
        Two a = new Two();
    }
}
public class Two {
    ArrayList<String>data;
    String asd;

    public Two(String asd){
        this.asd=asd;
        data.add(this.asd);       
    }  
}

根据@Maroun Maroun和@Bennyz的注释,您可以在两个类中创建getter和setter方法:

import java.util.ArrayList;
public class Two {

    ArrayList<String> data;
    String asd;

    public Two(String asd) {
        this.asd = asd;
        data = new ArrayList<>(); //<-- You needed to initialize the arraylist.
        data.add(this.asd);
    }

    // Get value of 'asd',
    public String getAsd() {
        return asd;
    }

    // Set value of 'asd' to the argument given.
    public void setAsd(String asd) {
        this.asd = asd;
    }
}

您的代码还有一些不正确的地方:

public class One {
    String asd;

   /**
   * The name 'class' cannot be used for a method name, it is a reserved
   * keyword.
   * Also, this method is missing a return value.
   * Last, you forgot a ";" after asd="2d6". */
    public class() {
        asd="2d6"
    }    

    /** This is better. Best would be to create a setter method for this, or
    * initialize 'asd' in your constructor. */
    public void initializeAsd(){
        asd = "2d6";
    }

    public static void main(String args[]) {
        /**
         * You haven't made a constructor without arguments.
         * Either you make this in you Two class or use arguments in your call.
         */
        Two a = new Two();
    }
}

根据@cricket_007的评论,
public class()
方法的更好解决方案是:

public class One {

    String asd;

    public One(){
        asd = "2d6";
    }
}

这样,当创建一个
One
对象(
One=newone
)时,它已经有一个
asd
字段,带有“2d6”。

通过使用getter和setter。您可以在
Two
类中创建一个getter/setter。我看到
公共类()上的注释时,可能存在重复项,但也许您可以修复它?和
data.add(this.asd)有一个NullPointerException@cricket_007删除
public class()
并使用
public void initializesd()
方法。发生NullPointerException是因为ArrayList数据未初始化,现在已初始化。