如何读写 java 中的私有字段

How to read and write on private fields in java

我想要write/read一个私有变量... 请查看我的代码:

 public class Date {
 Date time = new Date();
 private int year,month,day ;
    public static void main(String[] args) {
        System.out.println("My text :");
       Scanner myScanner = new Scanner(System.in);
       int year,month,day ;
       String error = "My text " ;
       String monthName = null ;
       System.out.println("Year :") ;
       year = myScanner.nextInt();
       setYear(year) ;
       System.out.println("Month :") ;
       month = myScanner.nextInt();
       setMonth(month) ;
       System.out.println("Day :") ;
       day = myScanner.nextInt();
       setDay(day) ;
       switch(month) {
       case 1 :
           monthName = "Name of this month in my language" ;
           break ;
       case 2 :
           monthName = "Name of this month in my language" ;
           break ;
       case 3 :
           monthName = "Name of this month in my language" ;
           break ;
       case 4 :
           monthName = "Name of this month in my language" ;
           break ;
       case 5 :
           monthName = "Name of this month in my language" ;
           break ;
       case 6 :
           monthName = "Name of this month in my language" ;
           break ;
       case 7 :
           monthName = "Name of this month in my language" ;
           break ;
       case 8 :
           monthName = "Name of this month in my language" ;
           break ;
       case 9 :
           monthName = "Name of this month in my language" ;
           break ;
       case 10 :
           monthName = "Name of this month in my language" ;
           break ;
       case 11 :
           monthName = "Name of this month in my language" ;
           break ;
       case 12 :
           monthName = "Name of this month in my language" ;
           break ;
           default : System.out.println("Error !") ;
       }
       if(day >= 1 && day <=31){
       JOptionPane.showMessageDialog(null ,getYear() + " " + monthName + " " + getDay()) ;
       }
       else {
           System.out.println(error);
       }
    }
    public int getYear() {
        return year;
    }
    public void setYear(int year) {
        this.year = year;
    }
    public int getMonth() {
        return month;
    }
    public void setMonth(int month) {
        this.month = month;
    }
    public int getDay() {
        return day;
    }
    public void setDay(int day) {
        this.day = day;
    }

}

我想要 read/write 私人 year/month/day ... 只是私人... 我已经创建了他们的可访问功能,但我收到有关 ("Cannot make a static reference to the non-static method setYear(int) from the type Date" 的错误,我无法修复它 .. 你能帮帮我吗?

首先,您应该尽量避免在 Date class 中混合使用 main 方法。您可以使用 main 创建另一个 class,它看起来像这样(以测试 运行 您的代码):

class DateRunner
{
    public static void main(String[] args){
        Date d = new Date();
        System.out.println(d.getDay()); //getting variables from Date object.
    }
}

class Date{
    //Your usual implementation (members and constructor)
}

一旦你这样做,你就可以很容易地使用 class 中的变量。


我不确定你的学校是否希望你将 class 命名为日期。如果我是你,我会尝试将其命名为 MyDate 而不是 Date,因为 Java.

中已经有日期 class

i receive an error about ("Cannot make a static reference to the non-static method setYear(int) from the type Date" and i can't fix it .. can you help me ?

您需要了解什么是 static 成员。它给你错误,因为你试图从你的 main 访问非静态成员,这是一个静态方法。

2 种停止错误的方法:

  1. 将 class 中的变量设为静态(强烈建议 你不要这样做)

  2. 创建 Date 的实例并从 Date 对象访问实例变量。(这是你应该做的)

示例:

Date d = new Date();  //Create an object of Date

现在您可以通过它的实例轻松访问 Date 的所有成员。

示例:

d.getDay();
d.setDay(5);
d.getMonth();
d.setMonth(7);
d.getYear();
d.setYear(2015);

您现在可以在 main 方法中编写这些内容。

How to read and write on private fields in java

通过创建对象并像上面那样使用 getter 和 setter。