public Opt<T> or(Supplier<? extends Opt<? extends T>> supplier) {
		Objects.requireNonNull(supplier);
		if (isPresent()) {
			return this;
		} else {
			@SuppressWarnings("unchecked") final Opt<T> r = (Opt<T>) supplier.get();
			return Objects.requireNonNull(r);
		}
	}
@Test
	public void orTest() {
		// 这是jdk9 Optional中的新函数，直接照搬了过来
		// 给一个替代的Opt
		String str = Opt.<String>ofNullable(null).or(() -> Opt.ofNullable("Hello hutool!")).map(String::toUpperCase).orElseThrow();
		assertEquals("HELLO HUTOOL!", str);

		User user = User.builder().username("hutool").build();
		Opt<User> userOpt = Opt.of(user);
		// 获取昵称，获取不到则获取用户名
		String name = userOpt.map(User::getNickname).or(() -> userOpt.map(User::getUsername)).get();
		assertEquals("hutool", name);
	}