Java 在接口中调用私有方法

Java 在接口中调用私有方法,java,spring,Java,Spring,在控制器调用的接口实现中,我有以下方法 @Override public String getCard(Request request, String amount) { String card = null; List<Card> cards = createCard(request, amount); // THIS IS THE CALL card = <API>.getDetails(request, cards); return

在控制器调用的接口实现中,我有以下方法

@Override
public String getCard(Request request, String amount) {
    String card = null;
    List<Card> cards = createCard(request, amount); // THIS IS THE CALL
    card = <API>.getDetails(request, cards);
    return card;
}
@覆盖
公共字符串getCard(请求,字符串金额){
字符串卡=空;
List cards=createCard(请求,金额);//这就是调用
卡片=.getDetails(请求,卡片);
回程卡;
}

private List createCard(请求,字符串金额){
列表付款=新建ArrayList();
. . . 
付款。添加(卡详细信息);
退还款项;
}

我需要在控制器中获取列表
列表卡
,但getCard只返回卡。每次,当我们调用私有方法“createCard”时,它都会创建卡片并将其存储到列表中。有没有办法在每次不创建卡片的情况下获取列表?

以下是实现此目的的示例代码:

@Configuration
public class AppConfig {
   @Bean("cardList")
   @Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
   public List<Card> getInstance() {
      return new ArrayList<Card>();
   }
}
@配置
公共类AppConfig{
@Bean(“卡片列表”)
@范围(值=ConfigurableBeanFactory.Scope\u SINGLETON)
公共列表getInstance(){
返回新的ArrayList();
}
}
无论何时,只要想使用代码,只需使用

    @Service
    class CreateCard{
       @Autowired
       private List<Card> cardList;
       private List<Card> createCard(Request request, String amount) {
       if(!cardList.empty())cardList.clear(); //use this to clear the cardList for previous data

        cardList.add(card details);
        return payment;
        }   

    }
@服务
类创建卡{
@自动连线
私人名单;
私有列表createCard(请求,字符串金额){
如果(!cardList.empty())cardList.clear();//使用此选项清除以前数据的cardList
卡片列表。添加(卡片详细信息);
退还款项;
}   
}

这将创建一次
列表
实例,每次使用
@Autowired
时都使用它,方法是在整个应用程序中注入相同的实例。

您可以将代码设计为具有单独的类
帐户
。(你可以改变这个名字,这是我能想到的最好的名字)

类帐户{
私人名单卡;
公共卡(){
this.payment=new ArrayList();
}
//取回所有卡片
公开名单{
回程卡;
}
//创建卡片并添加到列表中
void createCard(){
//根据你的要求修改这个
付款。添加(“”);
}
}

现在,使用此方法,您已将两个功能(即创建和检索)分别分离为两个独立的方法
createCard()
getCards()

您是否尝试创建
getter
方法?是否可以更改
createCard()
定义?能否向我们展示完整的类和接口?您的
createCard
方法每次都会创建新列表。您无法检索未存储在任何地方的信息。@Nicholk问我们如何更改createCard()定义?@Futuregeek:为了获得更好的结果,您最好共享该界面。(我已经包括了一个答案,希望能有所帮助)
    @Service
    class CreateCard{
       @Autowired
       private List<Card> cardList;
       private List<Card> createCard(Request request, String amount) {
       if(!cardList.empty())cardList.clear(); //use this to clear the cardList for previous data

        cardList.add(card details);
        return payment;
        }   

    }
class Account {

    private List<Card> cards;

    public Card() {
        this.payment = new ArrayList<>();
    }

    // retrieve all cards
    public List<Card> getCards() {
        return cards;
    }

    // create card and add to list
    void createCard() {
        // alter this as per your requirement
        payment.add("");
    }
}