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