effective java 第27条 优先考虑泛型方法

第27条 优先考虑泛型方法

package .fanxing27;

public class UnaryFunctionClass {

	private static UnaryFunction<Object> IDENTY_FUNCTION=
			new UnaryFunction<Object>() {
				@Override
				public Object apply(Object args) {
					return args;
				}
			};

			/**
			 * Type safety: Unchecked cast from UnaryFunction<Object> to UnaryFunction<T>
			 * 
			 * @return
			 */
			@SuppressWarnings("unchecked")
			public static <T> UnaryFunction<T> identifyFunction(){
				return (UnaryFunction<T>) IDENTY_FUNCTION;
			}
			
			/**
			 * 使用同一个对象,好像多线程并发的时候,会有问题?
			 * 不会,是无状态的,单例,所以不会,不存在数据共享的问题.
			 * 所以泛型也可以做成单例的.
			 * 11
				22
				33
				1
				2
				3
				com.itrus.laweye.fanxing27.UnaryFunctionClass$1@15db9742
				com.itrus.laweye.fanxing27.UnaryFunctionClass$1@15db9742
			 * @param args
			 */
			public static void main(String[] args) {
				String[] strings = {"11","22","33"};
				UnaryFunction<String> sameString = identifyFunction();
				for (String string : strings) {
					System.out.println(sameString.apply(string));
				}
				
				Integer[] integers = {1,2,3};
				UnaryFunction<Integer> sameIntegers = identifyFunction();
				for (Integer string : integers) {
					System.out.println(sameIntegers.apply(string));
				}
				System.out.println(sameString);
				System.out.println(sameIntegers);
			}
	
}

package .fanxing27;

public interface UnaryFunction<T> {

	T apply(T args);
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值