当前位置: 首页 > 面试题库 >

为什么我的公共void构造函数{}无法编译?

封鸿雪
2023-03-14
问题内容

我的一项作业需要一个银行帐户才能从支票和储蓄帐户转帐资金。交易存储在ArrayList中,并设置为用户指定何时转移资金。用于支票和储蓄的银行帐户类可以正常工作,但是我创建的TransferService类在NetBeans中不能正确编译。

这些提示似乎无法解决错误。我得到错误:

事务是抽象的,无法实例化。

我该如何解决这个问题?

import java.util.ArrayList;
import java.util.Date;
import javax.transaction.Transaction;

public class TransferService {
    private Date currentDate;
    private ArrayList<Transaction> completedTransactions;
    private ArrayList<Transaction> pendingTransactions;

    public void TransferService(){
        this.currentDate = new Date();
        this.completedTransactions = new ArrayList<Transaction>();
        this.pendingTransactions = new ArrayList<Transaction>();
    }

    public TransferService(BankAccount to, BankAccount from, double amount, Date when) throws InsufficientFundsException(){
        if (currentDate.after(when)){
            try(
            from.withdrawal(amount);
            to.deposit(amount);
            completedTransactions.add(new Transaction(to, from, this.currentDate, Transaction.TransactionStatus.COMPLETE));
            } catch (InsufficientFundsException ex){
                throw ex;
            }
        } else {
            pendingTransactions.add(new Transaction(to, from, null, Transaction.TransactionStatus.PENDING));
        }
    }

    private static class InsufficientFundsException extends Exception {

        public InsufficientFundsException() {
            System.out.println("Insufficient funds for transaction");
        }
    }

问题答案:

构造函数没有返回类型。所以不

// this is a "pseudo"-constructor
public void TransferService(){

反而

// this is the real deal
public TransferService(){

关于,

交易是抽象的,无法实例化

好吧 Transaction类是抽象类还是接口?只有拥有代码的人才能知道答案。如果是这样,那么您需要在代码中使用Transaction的具体实现。



 类似资料:
  • 问题内容: 用于java.io.FileDescriptor.FileDescriptor()的 JavaDoc 说: 构造一个(无效的)FileDescriptor对象。 如果构造函数没有目的,为什么它的访问级别未声明为 package-private ? 问题答案: 此构造函数是公共的,因为它在之外使用。 在JRE 7u4 Linux x86中使用的类: 有一种方法允许程序员将a的状态更改为有

  • 最近,我将Paho MQTT Spy项目导入Eclipse。导入结束时出现错误: 为什么我会收到这条信息,这意味着什么?怎么修? 我正在使用Java13.0.1 我试图用maven构建项目,得到了同样的错误。 我添加了下面的依赖项到pom.xml 现在pom.xml如下所示: Maven给出了错误: UPD Java8解决了问题,但我仍然试图使java 13与它一起工作。 正在尝试使用下面定义的p

  • 问题内容: 在编组期间,JAXB需要一个公共的无参数构造函数吗? 我正在传递一个对象,而不是一个类。为什么JAXB需要构造函数?要构造什么? 问题答案: 在执行封送操作期间,JAXB实现不应需要无参数构造函数。JAXB确实需要一个解组。通常,在创建JAXBContext时,缺少no- arg构造函数会导致错误。您正在使用的JAXB实现可能会延迟初始化,直到执行实际操作为止。 通常,在将来的JAXB

  • 问题内容: 根据Java语言规范,无法将构造函数标记为已同步,因为其他线程在创建该对象的线程完成之前无法看到正在创建的对象。这似乎有些奇怪,因为在构造对象时,我确实可以让另一个线程查看该对象: 我知道这是一个非常人为的示例,但从理论上讲,似乎有人可以提出一个更现实的案例,在该案例中,标记构造函数为同步状态是合法的,以防止此类线程的竞争。 我的问题是:Java是否有理由特别禁止在构造函数上使用syn

  • 问题内容: Java 构造函数的文档说明: 注意:很少适合使用此构造函数。除非需要新实例,否则静态工厂通常是更好的选择。它可能会产生明显更好的时空性能。 如果是这样,为什么这个构造函数是公开的而不被弃用?是否有充分的理由使用此构造函数代替? 问题答案: Java 1.4中仅添加了它,因此似乎存在构造函数是为了向后兼容。 此票证解释了不弃用构造函数的原因: 由于该中断,API可能不推荐使用,因此,当

  • 我用java编写这个简单的类只是为了测试它的一些特性。 0 那么为什么当我在构造函数方法声明中使用时,类的静态字段不再改变了呢?