试图修复java中的解引用错误

试图修复java中的解引用错误,java,Java,我有一个问题,我试图从“宇宙的新开端”,即1970年1月1日,找到一个特定长值的日期和时间 当我试图将我的新值传递给toString对象时,我得到了一个“无法取消引用”错误 我不明白的是,这可以获得毫秒的时间,并以更可读的日期/时间格式显示,所以在我对它做了大量的数学运算之后,为什么不呢 import java.util.*; public class Date { public static void main(String[] args) { Date mydate1

我有一个问题,我试图从“宇宙的新开端”,即1970年1月1日,找到一个特定长值的日期和时间

当我试图将我的新值传递给toString对象时,我得到了一个“无法取消引用”错误

我不明白的是,这可以获得毫秒的时间,并以更可读的日期/时间格式显示,所以在我对它做了大量的数学运算之后,为什么不呢

    import java.util.*;

public class Date {
public static void main(String[] args) {


    Date mydate1 = new Date(10000);
    System.out.println("The date and time of " +
        mydate1.elapse + " from the Unix epoch is " + mydate1.getMyTime());

    Date mydate2 = new Date(100000);
    System.out.println("The date and time of " +
        mydate2.elapse + " from the Unix epoch is " + mydate2.getMyTime());

    Date mydate3 = new Date(1000000);
    System.out.println("The date and time of " +
        mydate3.elapse + " from the Unix epoch is " + mydate3.getMyTime());

    Date mydate4 = new Date(10000000);
    System.out.println("The date and time of " +
        mydate4.elapse + " from the Unix epoch is " + mydate4.getMyTime());

    Date mydate5 = new Date(100000000);
    System.out.println("The date and time of " +
        mydate5.elapse + " from the Unix epoch is " + mydate5.getMyTime());

    Date mydate6 = new Date(1000000000);
    System.out.println("The date and time of " +
        mydate6.elapse + " from the Unix epoch is " + mydate6.getMyTime());

    /*Date date7 = new Date(10000000000);
    System.out.println("The date and time of " +
        date7.elapse + " from the Unix epoch is " + date7.getTime());

    Date date8 = new Date(100000000000);
    System.out.println("The date and time of " +
        date8.elapse + " from the Unix epoch is " + date8.getTime());*/
}

long elapse;

Date() {
    elapse = 1;
}

Date(long elapseTime) {
    elapse = elapseTime;
}



long getMyTime() {
    //java.util.Date date = new.java.util.Date();
    long currentMillis = System.currentTimeMillis();

    long date = currentMillis + elapse - currentMillis;
    System.out.println(date.toString());

您不能在
(基元类型)上调用
toString()
-

//System.out.println(date.toString());

系统输出打印项次(日期);// 问题出在:System.out.println(date.toString())

date的基元类型为long(它不是包装类long的对象)。因此,方法toString()对于“date”不可用。相反,您可以简单地使用:

System.out.println(date);
如果要打印格式化日期,请使用以下命令:

Dste d = new Date(date);
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss");
System.out.println(sdf.format(d));

变量
date
是一个基元(
long
),而不是一个对象
toString
是所有java类从
java.lang.Object
继承的方法,因此在所有对象(类的实例)中都可用。long只是一个基元,基元没有方法,它们也不从对象继承

所以你只需要

  System.out.println(date);

基元类型没有方法。以后请仅显示导致问题的代码和准确的错误消息。是。。。在我的教科书和整个网络上都有这样的说法。重用JDK中包含的类名(即Date)是个坏主意。代码中的注释看起来也要使用java.util.Date。另外,您打算在这里计算什么:
currentMillis+elapse-currentMillis
?这毫无意义。@NeplatnyUdaj。。。我试图找到10000000毫秒的日期和时间,例如,从UE的开始。我能想到的唯一方法是将值加到currentTimeMillis,然后减去currentTime——所有这些都是为了让toString函数工作,这样我就可以以可读的格式显示1000000毫秒的时间和日期。好的。。。这是有道理的。但是它不是简单地输出一个丑陋的大数字,而不是一个整洁的mm/dd/yyyy hh:mm:ss吗?我已经添加了代码,可以处理这些代码that@ashape请记住,
date
对日期可能有意义,但对Java来说,它只不过是一些基本类型
long
。Java无法知道您的
long
表示日期,因此必须使用类似
SimpleDateFormat
的内容“告诉它”。感谢您的帮助。。。我知道你们对新手很失望。代码修复看起来可能有效,但它会生成一系列“找不到符号”错误,我甚至不知道如何调用这些项。@ashape如果您命名变量来表示它们的含义,会更有意义,例如:long epochTime,Date Date…这将使代码更具可读性。
long date = currentMillis + elapse - currentMillis;
  System.out.println(date);