0 java reflection inner-classes
我正在尝试举一个用户和银行程序的简单示例,在该示例中,您必须保证钱不能被可以添加,继承,实现当前现有类但不能编辑初始类的人所欺骗。因此,我问您是否可以在没有提供的转账功能的情况下设置某人的帐户余额。
我尝试使用反射,但是您必须具有公共构造函数才能创建一个对象,在该对象上调用私有方法,但是由于所有内容都是私有的,因此无法对其进行调用。
public class Bank {
private static Bank ourInstance = new Bank();
public static Bank getInstance() {
return ourInstance;
}
private Bank() {}
public boolean requestTransfer(User user1, User user2, double amount) {
BankAccount ba1 = (BankAccount) user1.getBankAccount();
BankAccount ba2 = (BankAccount) user2.getBankAccount();
if (!(hasAccount(ba1) && hasAccount(ba2)))
return false;
if (ba1.getBalance() >= amount)
{
ba1.setBalance(ba1.getBalance() - amount);
ba2.setBalance(ba2.getBalance() + amount);
return true;
}
return false;
}
private class BankAccount implements BankAccountInterface {
private double balance;
private User user;
private BankAccount(double balance) {
this.balance = balance;
}
@Override
public double getBalance() {
return balance;
}
@Override
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
private void setBalance(double balance) {
this.balance = balance;
}
}
}
public interface BankAccountInterface {
double getBalance();
User getUser();
}
public class User {
private String username;
private String password;
private Date created_at;
private BankAccountInterface bankAccount;
//constructor getters and setters etc..
}
Run Code Online (Sandbox Code Playgroud)
如果您可以添加自己的类继承当前的类,则可以使用反射或任何您可以随意非法使用的金钱。
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |