日期类和异常抛出

时间:2015-11-28 04:18:41

标签: java date exception-handling

只需要快速帮助。

我试图在面向对象的编程中使用Java的内置日期类。我的问题是我在课堂的数据部分放了什么?

目前,我有这个:

    private double balance;
    private String name;
    private java.util.Date creationDate; (Wrong I know, but you get what I am tring to do here.)
    private boolean frozen;
    private double limit;
    private double MAXLIMIT;
    private int accountNumber;
    private static int howMany;

如何正确命名creationDate?

最后,我的最后一个问题是可以在类中抛出异常而不是主要的吗?我教授在课堂上展示的所有例子都是主要的或者是司机。我很奇怪是否有可能在我的课堂上这样做,如果我可以和主要相同,即使用try然后捕捉等。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

从评论中听起来你的问题是:“我如何让我的对象记录知道实例化时的日期时间,施工期间的当前时刻?”。

你有一半的解决方案:在类上为每个实例定义一个成员变量来记录当前时刻。

不幸的是,您使用的Java.util.Date类在Java 8中已经过时了。该类和相关的java.util.Calendar令人困惑且麻烦。而是使用新的java.time类。为了您的目的,java.time.Instant是最佳选择,可以在UTC时区的时间轴上捕捉片刻。

其次,你的类需要一个构造函数。只要某些代码为您的类调用new,就会自动调用此方法。在那个构造函数中,我们捕获当前时刻。

这是一个示例类。我们有两个成员变量。构造函数对传递的帐号执行几项检查,如果这些检查失败,则会抛出异常(正如您在问题中提到的那样)。

在学习Java时尝试忽略main方法。这种方法很时髦,令人困惑。想想它只是解决启动应用程序的鸡与蛋问题所需的必要之恶。

package com.example.javatimestuffmaven;

import java.time.Instant;

public class Account {

    String accountNumber;
    Instant whenInstantiated;

    public Account ( String accountNumber ) {
        if ( accountNumber == null ) {
            throw new IllegalArgumentException ( "Null value passed as account number." );
        }
        if ( accountNumber.length () != 8 ) {
            throw new IllegalArgumentException ( "Value passed as account number is not 8 characters in length: " + accountNumber );
        }
        this.accountNumber = accountNumber;
        this.whenInstantiated = Instant.now ();  // Grab the current date-time in UTC time zone.
    }

    @Override
    public String toString () {
        return "Account{ " + "accountNumber=" + accountNumber + " | whenInstantiated=" + whenInstantiated + " }";
    }

    public static void main ( String[] args ) {
        // Try to ignore the 'main' method.
        Account account = new Account ( "X4092253" );
        System.out.println ( "account: " + account );
    }

}

跑步时。

  

帐户:帐户{accountNumber = X4092253 | whenInstantiated = 2015-11-29T02:12:10.683Z}