zoukankan      html  css  js  c++  java
  • 【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();
            }
        }
    }
  • 相关阅读:
    最小移动次数使数组元素相等
    计算几何
    北校门外的回忆
    洗衣服
    HDU1046:Gridland
    注册机的实现如(istarMenu CORE Keygen)
    是你吗?
    (译)KVO的内部实现
    通过UIColor转换为UIImage
    Palindrome Number 解题报告
  • 原文地址:https://www.cnblogs.com/LightChan/p/8335158.html
Copyright © 2011-2022 走看看