gpt4 book ai didi

java - 使用其他类的函数而不修改它(对非静态方法的静态引用)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:06:18 25 4
gpt4 key购买 nike

我有一个用于获取日期的 Java 类。我想知道如何在不改变它的情况下访问这个类。 (德语中的代码 i,但它只是几个单词)

这是我无法更改的类:

import java.util.Calendar;


public class Datum {
private int tag;
private int monat;
private int jahr;

/**
* Standard Datum 1.1.1970
*/
public Datum() {
this.tag = 1;
this.monat = 1;
this.jahr = 1970;
}

/**
*
* @param tag : tag > 0 und tag <= 31
* @param monat : monat > 0 und monat <= 12
* @param jahr : jahr beliebig
**/
public Datum(int tag, int monat, int jahr) {
assert(tag > 0 && tag <= 31);
assert(monat > 0 && monat <= 12);

this.tag = tag;
this.monat = monat;
this.jahr = jahr;
}

public int getTag() {
return tag;
}
public void setTag(int tag) {
this.tag = tag;
}
public int getMonat() {
return monat;
}
public void setMonat(int monat) {
this.monat = monat;
}
public int getJahr() {
return jahr;
}
public void setJahr(int jahr) {
this.jahr = jahr;
}

public static Datum heute(){
Calendar c = Calendar.getInstance();
return new Datum(c.get(Calendar.DAY_OF_MONTH),(c.get(Calendar.MONTH)+1),c.get(Calendar.YEAR));
}


}

这是我尝试获取当前日期的方法:

public class Aufgabe3 {

public static void main(String[] args) {
Datum.heute();
System.out.println(Datum.getTag());


}

}

当我尝试运行代码时,它显示“无法从 Datum 类型对非静态方法 getTag() 进行静态引用”。如何在不更改类基准的情况下访问日期?

最佳答案

我试图通过解释您的代码实际做什么来回答这个问题。

通过执行 Datum.heute();,您可以调用 Datum< 的 static 方法 heute()/类。静态方法独立于实际实例,即该类的对象。

heute() 返回一个 Datum 实例,但您永远不会将它存储在任何地方。

然后在第二行尝试调用 Datum.getTag()。由于您调用的是 Datum 类而不是对象(例如 someDatumObject.getTag()),Java 编译器会尝试查找静态方法。

因此,要解决您的 Aufgabe 3,您需要:

  • 通过heute()创建实例
  • 对该对象调用 getTag()

关于java - 使用其他类的函数而不修改它(对非静态方法的静态引用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21042345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com