延迟加载 java_在Java中延迟加载接口

我正在尝试使用Java Lists创建一个延迟加载方法,它接受索引,向List添加元素直到索引有效,并返回该索引处的值.

例如,假设我有一个像[0,1,2,3]这样的列表.如果我用它调用我的方法并传入索引1,它应该返回1而不以任何方式更改List.如果我用它调用我的方法并传入索引5,它应该返回0(默认的Integer值),我的List现在应该看起来像这个[0,1,2,3,0,0].

最初实现起来似乎相当简单,但是当我尝试传入Lists(如List< List< String>>)时会遇到问题.我知道你不能实例化一个列表,所以我尝试创建一个ArrayList,但它不起作用.

这是我方法的当前化身

protected T getOrCreateAt(int index, List list, Class elementClass) {

while (list.size() < index + 1) {

try {

list.add(elementClass.newInstance());

} catch (InstantiationException e) {

e.printStackTrace();

System.exit(1);

} catch (IllegalAccessException e) {

e.printStackTrace();

System.exit(1);

}

}

return list.get(index);

}

这是我称之为的地方

List> solutionText = new ArrayList>();

for (Node node : solution) {

List row = getOrCreateAt(node.rowNo, solutionText, ArrayList.class);

getOrCreateAt(node.colNo, row, String.class);

row.set(node.colNo, String.valueOf(node.cellNo));

}

对getOrCreateAt的第二次调用有效,但第一次调用不能编译.

如何让我的延迟加载方法在接口和抽象类上工作?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值