为啥我的 public void Constructor 不能编译?

Posted

技术标签:

【中文标题】为啥我的 public void Constructor 不能编译?【英文标题】:Why won't my public void Constructor compile?为什么我的 public void Constructor 不能编译? 【发布时间】:2014-12-28 23:07:36 【问题描述】:

我有一项任务需要银行账户才能从支票和储蓄账户转移资金。交易存储在 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");
        
    

【问题讨论】:

【参考方案1】:

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

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

而是

// this is the real deal
public TransferService()

关于,

事务是抽象的,不能实例化

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

【讨论】:

好的,我想我明白你的意思了。它不应该是一个抽象类,因为我认为我没有一个设置。我的猜测是我是否需要为 Transaction 设置一个单独的类,然后才能实例化或声明它以在 TransferService 方法和 arraylist 中使用?

以上是关于为啥我的 public void Constructor 不能编译?的主要内容,如果未能解决你的问题,请参考以下文章

为啥不显示char数据的地址?

为啥不显示char数据的地址?

.select_on_container_copy_construction 左侧的 C++ boost::container::vector 必须具有类/结构/联合

Dev C++为啥不支持以void main()为主函数的空函数C程序?老师给出的一直都是以Tu

为啥在我的 Web 服务中调用此方法时出现错误“无法将类型 'void' 隐式转换为 'string'?

如何从终端运行Java public static void main [复制]