@Override
	public T next() {
		lock.lock();
		try {
			if (false == this.hasNext()) {
				throw new NoSuchElementException("Has no next range!");
			}
			return nextUncheck();
		} finally {
			lock.unlock();
		}
	}
@Test
	public void rangeDayOfYearTest() {
		DateTime start = DateUtil.parse("2017-01-01");
		DateTime end = DateUtil.parse("2017-01-05");

		// 测试不包含开始结束时间的情况
		DateRange range = new DateRange(start, end, DateField.DAY_OF_YEAR, 1, false, false);
		assertEquals(DateUtil.parse("2017-01-02"), range.next());
		assertEquals(DateUtil.parse("2017-01-03"), range.next());
		assertEquals(DateUtil.parse("2017-01-04"), range.next());
		try {
			range.next();
			fail("不包含结束时间情况下，下一个元素不应该存在！");
		} catch (NoSuchElementException ignored) {
		}
	}