【问题标题】:How to limit instantiation of class and methods in it -Java如何限制类和方法的实例化-Java
【发布时间】:2026-01-15 10:25:01
【问题描述】:
@AllArgsConstructor(onConstructor = @__({ @Inject }))
public class TransactionManager {

    private final TransactionHelper tnxHelper;

    public void createTransactions(List<Details> details) {
        tnxHelper.createTransactions(details); 
    }
}

@AllArgsConstructor(onConstructor = @__({ @Inject }))
public class TransactionHelper {

    private final A a;    
    private final B b;

    public void createTransactions(List<Details> details) {
        //Some logic
    }
}

所以在上面的代码中,我希望 TransactionManager 成为主类,并且与 Transaction 相关的每个交互都应该通过它,例如createTransactions

那么我怎样才能使TransactionHelper 隐藏?这样除了TransactionManager之外没有人可以使用这个类?

还有什么方法可以只隐藏TransactionHelper 中的createTransactions,而不是隐藏整个班级。

提前谢谢你!!

【问题讨论】:

标签: java interface abstract-class abstract class-structure


【解决方案1】:

嵌套类的使用能解决您的问题吗? https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

class TransactionManager {
  // you cannot use the class TransactionHelper outside the TransactionManagerClass 
  // you need an instance of TransactionManager to have an instance of TransactionHelper 
  // so within static methods here you cant use it directly
  private class TransactionHelper {
  }

  void dooo() {
    TransactionHelper t = new TransactionHelper();
  }
}

【讨论】: