5、使用泛型替代原生类型

java1.5中提供了泛型,简单来说就是将类型作为参数传入,这样java会自动转换类型,不需要我们进行强制转换。

Map<String, Integer> map = new HashMap<>();
map.put("age", 18);
Integer age = map.get("age");

我们看到,没有任何instanceOf的判断,也没有任何强制类型转换。泛型是我们在编译的时候就能确保类型的正确性,是写出强健代码的良好方式。

时间: 2024-08-26 02:59:53

5、使用泛型替代原生类型的相关文章

【ThinkingInJava】39、对于&lt;?&gt;和原生类型的判断

package Lesson15_generices; //: generics/CovariantArrays.java class Fruit {} class Apple extends Fruit {} class Jonathan extends Apple {} class Orange extends Fruit {} public class CovariantArrays { public static void main(String[] args) { Fruit[] fr

泛型中的类型约束和类型推断

前一篇文章介绍了泛型的基本概念.在本文中,我们看一下泛型中两个很重要的特性:类型约束和类型推断. 类型约束 相信你还记得前面一篇文章中的泛型方法,在这个泛型方法中,我们就使用了类型约束. 类型约束(type constraint)进一步控制了可指定的类型实参,当我们创建自己的泛型类型或者泛型方法的时候,类型约束是很有用的. 回到前一篇例子中的泛型方法,这个泛型方法就要求可指定的类型实参必须实现了IComparable接口. 为什么会有这个约束呢?原因很简单,因为我们在泛型方法的实现中直接调用T类

C# 泛型 无法将类型xx隐式转换为“T”

原文:C# 泛型 无法将类型xx隐式转换为“T” 直接奖泛型转为T是不能转换的 要先转Object 例: public static T GetValue<T>(string inValue) { if (typeof(T) == typeof(Bitmap)) { return (T)(Object)new Bitmap(inValue); } else { //一般类型 return (T)Convert.ChangeType(inValue, typeof(T)); } throw ne

Gson通过借助TypeToken获取泛型参数的类型的方法(转)

最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使用了泛型的代码在运行期间相关的泛型参数的类型会被擦除,我们无法在运行期间获知泛型参数的具体类型(所有的泛型类型在运行时都是Object类型). 但是有的时候,我们确实需要获知泛型参数的类型,比如将使用了泛型的Java代码序列化或者反序列化的时候,这个时候问题就变得比较棘手. class Foo<T>

黑马程序员 - 泛型和基本类型包装类

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 泛型好处:1.将运行时期的ClassCastException,转移到了编译时期 方便程序员解决问题,让运行时期问题减少. 2.避免了强制转换.泛型格式:通过<>来定义要操作的引用数据类型.通常在集合框架中很常用.泛型类:当类中需要操作的引用数据类型不确定的时候,早期用Object来实现扩展.现在运用泛型类. 当方法中需要操作的引用数据类型不确定的时候,可以运用泛型方法.特殊之处:静态方法,

泛型T的类型获取

T.getClass()或者T.class都是非法的,因为T是泛型变量. 由于一个类的类型是什么是在编译期处理的,故不能在运行时直接在Base里得到T的实际类型. /** * 可以在service层直接调用,也可以在DAO层扩展调用 */ public class BaseDaoImpl<T> implements BaseDao<T> private Class<T> persistentClass; /** * 用于Dao层子类使用的构造函数. 通过子类的泛型定义取

再谈怎样以最简单的方法将泛型为String类型的集合或String类型的数组转化为逗号间隔字符串形式

今天review代码,看见某些大爷在将泛型为String类型的集合或String类型的数组转化为逗号间隔字符串形式时仍然仅仅顾结果不注重过程,"大爷"咱能负点责任吗? 将泛型为String类型的集合转化为逗号间隔字符串形式: 測试类: package com.ghj.packageofclient; import java.util.ArrayList; import java.util.List; import com.ghj.packageoftool.StringUtils; p

Gson通过借助TypeToken获取泛型参数的类型的方法

最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使用了泛型的代码在运行期间相关的泛型参数的类型会被擦除,我们无法在运行期间获知泛型参数的具体类型(所有的泛型类型在运行时都是Object类型). 但是有的时候,我们确实需要获知泛型参数的类型,比如将使用了泛型的Java代码序列化或者反序列化的时候,这个时候问题就变得比较棘手. class Foo<T>

Java进阶(四)Java反射TypeToken解决泛型运行时类型擦除的问题解决

在开发时,遇到了下面这条语句,不懂,然习之. private List<MyZhuiHaoDetailModel> listLottery = new ArrayList<MyZhuiHaoDetailModel>(); Gson gson=new Gson(); JSONObject object=new JSONObject(callbackValue); listLottery =  gson.fromJson(object.getString("lists&quo