在接口中调用私有方法

时间:2018-11-30 07:06:17

标签: 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 card;
}

private List<Card> createCard(Request request, String amount) {
    List<Card> payment = new ArrayList<>();
        . . . 
    payment.add(card details);
    return payment;
}

我需要在控制器中获取列表List<Card> cards,但getCard仅返回卡。每次,当我们调用私有方法“ createCard”时,它都会创建卡并将其存储到列表中。有什么方法可以在不创建卡片的情况下获得列表吗?

2 个答案:

答案 0 :(得分:1)

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

@Configuration
public class AppConfig {
   @Bean("cardList")
   @Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
   public List<Card> getInstance() {
      return new ArrayList<Card>();
   }
}

只要您想使用代码,只需使用

    @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;
        }   

    }

这将一次创建List<Card>个实例,并通过在整个应用程序中注入相同的实例来每次使用@Autowired来使用它。

答案 1 :(得分:1)

您可以将代码设计为具有单独的类Account。 (您可以更改此名称,这是我能想到的最好的方法)

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("");
    }
}

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