您的位置:首页 > 编程语言 > Java开发

【java】关于泛型修饰符

2018-01-23 12:38 323 查看
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();
}
}
}
总结:

1.如果需要方法有独立于类的泛型,在方法的返回类型前加”<> “即可

2. 可以使用  <> 对泛型做进一步的描述(确定范围)
 例如: <T extends Number ><T super Integer> 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: