[英]How to reference non-static variable name from static context?
我正在嘗試編寫一個允許用戶輸入團隊名稱的代碼。 這是我的代碼:
public class Team {
public String name;
public static void main(String[] args) {
System.out.println("Enter name team");
Scanner tn = new Scanner(System.in);
name = tn.nextLine();
}
}
我理解“無法從靜態上下文中引用非靜態變量名稱”。 我知道,如果我把“靜態”帶離主要部分那么它會起作用,但是:
a)如何在不“靜止”的情況下引用它?
b)有沒有辦法讓用戶輸入並直接將其分配給變量“name”,即沒有:
Scanner tn = new Scanner(System.in);
name = tn.nextLine();
我知道的基本問題,但我還是初學者! 非常感謝,邁爾斯
name
是團隊名稱。 因此,您需要實例化一個新的Team
對象並設置其名稱:
public static void main(String[] args) {
System.out.println("Enter name team");
Scanner tn = new Scanner(System.in);
Team team = new Team();
team.name = tn.nextLine();
}
static
方法不允許直接使用非靜態變量,因為在創建對象時在內存中初始化non-static/instance
變量。 因此,您需要創建該類的對象,然后使用該變量。 做這樣的事情:
Team teamObj = new Team();
//now access name variable using teabObj instance
teamObj.name = tn.nextLine();
您可以按如下方式使用反射來訪問該非靜態字段。
System.out.println("Enter name team");
Scanner tn = new Scanner(System.in);
Team team=new Team();
Field field=Team.class.getField("name");
field.set(team,tn.next());
System.out.println((String) field.get(team));
現場演示反思。
或者你可以嘗試如下。
Team team = new Team();
team.name = tn.nextLine();
現場演示
如果需要,創建一個Team對象。
Team team = new Team();
team.name = tn.nextLine();
靜態方法/變量綁定到類。 他們無法訪問非靜態變量(他們不知道應該在哪個類實例中調用該方法)。 您必須創建對象,然后調用非靜態方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.