Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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 在方法中使用静态变量作为参数?_Java_Oop_Methods_Static_Encapsulation - Fatal编程技术网

Java 在方法中使用静态变量作为参数?

Java 在方法中使用静态变量作为参数?,java,oop,methods,static,encapsulation,Java,Oop,Methods,Static,Encapsulation,我对Java比较熟悉。这些天我在处理面向对象的概念。 我被困在这里,因为我无法决定如何使用名为set的方法编写代码来完成我的代码。这是我的代码 class Date { private int year=1970; private int month=1; private int day=1; static int YEAR; static int MONTH; static int DAY; public void setYear(in

我对Java比较熟悉。这些天我在处理面向对象的概念。 我被困在这里,因为我无法决定如何使用名为set的方法编写代码来完成我的代码。这是我的代码

class Date {
    private int year=1970;
    private int month=1;
    private int day=1;
    static int YEAR;
    static int MONTH;
    static int DAY;

    public void setYear(int year){
        this.year=year;
    }
    public void setMonth(int month){
        this.month=month;
    }
    public void setDay(int day){
        this.day=day;
    }

    public void printDate(){
        System.out.println(year+"-"+month+"-"+day);
    }
    public void set(int field, int value){
        //


            //
    }
}
class Demo{
    public static void main(String args[]){
        Date d1=new Date();
        d1.printDate();
        d1.set(Date.YEAR,2018);
        d1.set(Date.MONTH,04);
        d1.set(Date.DAY,18);
        d1.printDate();
    }
}

我坚持使用
设置方法
。如何在set方法中编码。有人能帮我解决这个问题吗。非常感谢。

如果我解决了问题,您应该首先将
移动到
日期单位
枚举

public enum DateUnit {
    YEAR, MONTH, DAY
}
然后使
set
方法接受
DateUnit
int值

public void set(DateUnit unit, int value) {
    switch (unit) {
        case YEAR: {
            year = value;
            break;
        }
        case MONTH: {
            month = value;
            break;
        }
        case DAY: {
            day = value;
            break;
        }
    }
}
现在您可以这样使用它:

Date date = new Date();
date.set(DateUnit.YEAR,2018);
date.set(DateUnit.MONTH,04);
date.set(DateUnit.DAY,18);

我不明白这个问题。你说“我卡住了”,但从未描述过问题或错误。