无法对java类中的非静态字段进行静态引用

无法对java类中的非静态字段进行静态引用,java,Java,这是我的类,错误是无法对非静态字段进行静态引用。请告诉我是什么问题,让我知道如何解决它 感谢您的建议。将构造器中的所有“学院”引用替换为“此”。 “this”关键字指的是当前对象,而使用类名“College”直接指的是类的静态访问。您向构造函数传递了错误的实例:您必须将类的实例称为“this”。 正确语法: public class College { public String collegename; public String branch; public String

这是我的类,错误是无法对非静态字段进行静态引用。请告诉我是什么问题,让我知道如何解决它


感谢您的建议。

将构造器中的所有“学院”引用替换为“此”。
“this”关键字指的是当前对象,而使用类名“College”直接指的是类的静态访问。

您向构造函数传递了错误的实例:您必须将类的实例称为“this”。 正确语法:

public class College {
   public String collegename;
   public String branch;
   public String username;
   public String password;
 public College(String college,String branch,String user, String pass)
 {
 College.collegename = college;
 College.branch= branch;
 College.username= user;
 College.password= pass;
 }
} 

您正在声明类级变量,并像静态成员一样使用它。 试一试

关键字用于引用类变量

编辑:

如果你想使用评论中提到的

public class College {
   public String collegename;
   public String branch;
   public String username;
   public String password;
 public college(String college,String branch,String user, String pass)
 {
     this.collegename = college;
     this.branch= branch;
     this.username= user;
     this.password= pass;
 }
} 
在任何类中的任何位置将所有数据设置为第一位,如

public class College {
  String collegename;
  String branch;
  String username;
  String password;
  private static College instance = null;
  protected College() {
      // Exists only to defeat instantiation.
   }
  public static College getInstance() {
      if(instance == null) {
         instance = new College();
      }
      return instance;
   }
  public void SetData(String collegeName, String branch, String userName, String password)
  {
         this.collegename = collegeName;
         this.branch= branch;
         this.username= userName;
         this.password= password;
  }

  public String GetCollegeName()
  {
    return this.collegename;
  }
  // So on...
} 
College.getInstance().SetData("abcCollege","abcBranch","username","password");
在另一个类中使用它,例如

public class College {
  String collegename;
  String branch;
  String username;
  String password;
  private static College instance = null;
  protected College() {
      // Exists only to defeat instantiation.
   }
  public static College getInstance() {
      if(instance == null) {
         instance = new College();
      }
      return instance;
   }
  public void SetData(String collegeName, String branch, String userName, String password)
  {
         this.collegename = collegeName;
         this.branch= branch;
         this.username= userName;
         this.password= password;
  }

  public String GetCollegeName()
  {
    return this.collegename;
  }
  // So on...
} 
College.getInstance().SetData("abcCollege","abcBranch","username","password");
ArrayListdataToSend=new ArrayList();添加(新的BasicNameValuePair(“collegename”,College.getInstance().GetCollegeName());
或者干脆以大学为例

ArrayList<NameValuePair>dataToSend = new ArrayList<>(); dataToSend.add(new BasicNameValuePair("collegename", College.getInstance().GetCollegeName()));
College学院=新学院(“abcCollege”、“abcBranch”、“用户名”、“密码”)
ArrayListdataToSend=新的ArrayList();添加(新的BasicNameValuePair(“collegename”,college.collegename));

虽然我不懂Java,但应该是这样。

这里没有任何静态字段。只需将
College.
更改为
this.
您还需要将
College
构造函数资本化。例如,
公立学院(…
是的,将构造函数中的学院首字母大写,你就没事了。如果你想问何时何地使用static,你可能想编辑你的帖子。你试图将这些变量视为静态变量,而不是静态变量。如果你使用ClassName.variableName,那么它将假定变量是静态的。Hazma Hasan我正在使用那个类在另一个类中,当我使用ArrayListdataToSend=new ArrayList();dataToSend.add(new BasicNameValuePair(“collegename”,College.collegename)),从服务器发送和检索数据时,它显示了一个错误。请在College类中将collegename更改为静态。创建College实例或将其设置为singleton