[英]How to call String value one class to another class in Java
public class Sample1 {
public String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
Sample1 s1= new Sample1();
s1.setName("Abc");
}
}
public class Sample2 {
public static void main(String[] args) {
Sample1 n2= new Sample1();
System.out.println(n2.getName());
}
}
我有兩個類Sample1和Sample2兩個。 我正在使用setter方法分配字符串值,並使用getter方法返回另一個類,但輸出為null。 為什么輸出為null以及如何從一個調用到另一個類中獲取字符串值?
我認為您誤解了main方法,也許我錯了,但是只執行了一種main方法。
如果您運行Sample2.main-在Sample1上沒有設置名稱,則該名稱為null(Sample1.main從未執行)。
如果運行Sample1.main-將創建Sample1並為其分配一個名稱。
因此,可以在Sample2.main中分配名稱:
public static void main(String[] args) {
Sample1 n2= new Sample1();
n2.setName("xxx");
System.out.println(n2.getName());
}
或通過構造器完成。
public class Sample1 {
private final String name;
public String getName() {
return name;
}
public Sample1(String name) {
this.name = name;
}
}
考慮代碼:
Sample1 n2= new Sample1();
System.out.println(n2.getName());
這里沒有設置名稱,因此您需要先設置名稱,然后再獲取名稱。
Sample1 n2= new Sample1();
n2.setName("name goes here");
System.out.println(n2.getName());
另外,您可以在Sample1類中嘗試使用參數化的構造函數,並像在sample2類中那樣進行訪問:
Sample1 n2= new Sample1("your name goes here");
System.out.println(n2.getName());
構造函數將是:
public Sample2(String name){
this.name = n;
}
您可以在Sample1類中添加方法並在Sample2類中訪問它的三件事。
我不想在Sample2類中設置字符串值,僅需要在Sample1中分配字符串值,之后我就需要在Sample2類中使用該字符串值
public class Sample1 {
private String _name;
public String getName() {
return _name;
}
private setName(String name) {
_name = name;
}
public SetNameHelper(){
setName("somestring");//You will be setting the name in Sample 1
}
}
public class Sample2 {
public static void main(String[] args) {
Sample1 n2= new Sample1();
n2.SetNameHelper();
System.out.println(n2.getName());//You will be getting Name in Sample 2 class
}
}
class Sample2 {
Sample1 sample1;
Sample2(Sample1 sample){
this.sample1 = sample;
}
private String getSample1Name() {
return this.sample1.getName();
}
public static void main(String[] args) {
Sample1 sample1 = new Sample1();
sample1.setName("Abc");
Sample2 n2= new Sample2(sample1);
System.out.println(n2.getSample1Name());
}
}
我注意到您在每個類中創建了一個main
函數,其唯一作用是創建實例並設置該類的內部字段。 它可能是您正在尋找的構造函數。
這是交易:
main
方法。 所以這是您的示例,已固定(我認為),以某種方式可以將sample1的值帶入sample2 ,如您所說:
public class Sample1 {
public String name;
public String Sample1(String initialName){
this.name = initialName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Sample2{
public String name;
public String Sample2(String initialName){
this.name = initialName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class ProgramEntryPoint{
public static void main(String[] args) {
Sample1 s1 = new Sample1("a name");
System.out.println("Initial sample1 name: " + s1.getName());
s1.setName("a New Name!");
System.out.println("New sample1 name: " + s1.getName());
Sample2 s2 = new Sample2(s1.getName());
System.out.println("Initial sample2 name: " + s2.getName());
}
}
一旦運行ProgramEntryPoint.main,它將打印:
初始樣本1名稱:名稱
新的sample1名稱:新名稱!
sample2的初始名稱:新名稱!
這都是簡單的Java東西,您應該閱讀一些基本教程(oracle網站上的教程是一個好的開始)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.