使用Iterator实现延迟加载

 

package iterator;

import java.util.Iterator;
import java.util.Random;

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class IteratorTest {

 @Test(dataProvider = "generate-accounts-lazy")
 public void testAccount(Account a) {
  System.out.println("Testing account: " + a);
 }

 @DataProvider(name = "generate-accounts-lazy")
 public Iterator genetateAccountsLazy() {
  return new AccountIterator();
 }

 @DataProvider(name = "generate-accounts")
 public Object[][] generateAccounts() {
  return new Object[][] {
    new Object[] { new Account() },
    new Object[] { new Account() },
    new Object[] { new Account() },
    new Object[] { new Account() }
  };
 }

}

class AccountIterator implements Iterator {

 private static final int MAX = 4;
 private static int index = 0;

 @Override
 public boolean hasNext() {
  return index < MAX;
 }

 @Override
 public Object next() {
  index++;
  return new Object[] { new Account() };
 }

 @Override
 public void remove() {
  throw new UnsupportedOperationException();
 }

}

/**
 * 帐号
 */
class Account {

 private String number;

 public Account() {
  System.out.println("Creating account");
  this.number = "" + new Random().nextInt();
 }

 public String toString() {
  return "account -> " + number;
 }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值