Java编译错误:'类BankAccount是公共的, 应在名为 BankAccount.java 的文件中声明' 如何解决?
Java编译错误:'类BankAccount是公共的, 应在名为 BankAccount.java 的文件中声明' 如何解决?
在编译Java代码时,你可能会遇到以下错误信息:'类BankAccount是公共的, 应在名为 BankAccount.java 的文件中声明'。 这是因为Java编译器要求每个公共类都要定义在与其类名相同的文件中。
问题分析:
这段代码定义了四个类:BankAccount, Accountant, Cashier 和 Bank。 错误信息提示BankAccount类是公共的,因此它必须位于名为BankAccount.java的文件中。
解决方案:
将代码拆分成四个独立的文件,每个文件包含一个类:
- BankAccount.java:
public class BankAccount {
private int balance;
public BankAccount(int initialBalance) {
balance = initialBalance;
}
public synchronized void deposit(int amount) {
balance += amount;
}
public synchronized void withdraw(int amount) {
balance -= amount;
}
public synchronized int getBalance() {
return balance;
}
}
- Accountant.java:
public class Accountant implements Runnable {
private BankAccount account;
public Accountant(BankAccount account) {
this.account = account;
}
public void run() {
for (int i = 0; i < 10000; i++) {
account.deposit(1);
}
}
}
- Cashier.java:
public class Cashier implements Runnable {
private BankAccount account;
public Cashier(BankAccount account) {
this.account = account;
}
public void run() {
for (int i = 0; i < 10000; i++) {
account.withdraw(1);
}
}
}
- Bank.java:
public class Bank {
public static void main(String[] args) {
BankAccount account = new BankAccount(10000);
Thread t1 = new Thread(new Accountant(account));
Thread t2 = new Thread(new Cashier(account));
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println('Final balance: ' + account.getBalance());
}
}
编译和运行:
将这四个文件保存在同一目录下,然后使用以下命令编译和运行代码:
javac *.java
java Bank
总结:
在Java中,每个公共类都必须定义在与其类名相同的文件中。 这有助于保持代码的组织性和可读性。
原文地址: https://www.cveoy.top/t/topic/jmje 著作权归作者所有。请勿转载和采集!