【java】关于泛型修饰符
package p5.forkjoin; import java.util.function.Supplier; /* 这是一个模拟Optional类的用于处理空的类 */ public class MyTest<T> { /* * 被托管的值 */ private T value; public MyTest(T t) { this.value = t; } /* * 现在需要实现一个方法: 该方法接收一个 返回Throwable对象 的Supplier对象 * 如果value不为空返回value,否则抛出supplier对象(的get()方法)返回的异常 */ /* * 实现1 存在的问题:抛出的异常始终为throwable,即使e.get()返回一个RuntimeException。 */ // public T orElseThrow(Supplier<? extends Throwable> e) throws Throwable { // if (value != null) { // return value; // } else { // throw e.get(); // } // } /* * 实现2: * 让抛出的异常(e.get())也变为了泛型,e.get()返回的类型 与 throws 声明的类型一致 * */ public <A extends Throwable>T orElseThrow(Supplier<? extends A> e) throws A { if (value != null) { return value; } else { throw e.get(); } } }