泛型概述和好处
有勇气的牛排
1335
Java
2021-08-24 01:02:14
1 泛型介绍
泛型:是JDK5中引入的特性,它提供了编译时类型安全检测机制,该机制允许在编译时检测到非法的类型,它的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数
参数化:将类型由原来的具体的类型参数化,然后再使用/调用时传入具体的类型
这种参数类型可以在类、方法和接口中,分别被称为泛型类、泛型方法、泛型接口
泛型定义格式
1、<泛型> :指定一种类型的格式。这里的类型可以看成是形参
2、<类型1,类型2…>:指定多种类型的格式,多种类型之间用逗号隔开。这里的类型可以看成是形参
3、将来具体调用的时候给定的类型可以看成是形参,并且实参的类型只能是引用数据类型
泛型好处
1、把运行时期的问题提前到了编译时间
2、避免了强制类型转换
2 Collection集合存储字符串并遍历
package Generic;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class GenericDemo {
public static void main(String[] args) {
Collection<String> c = new ArrayList<String>();
c.add("hello");
c.add("world");
c.add("java");
Iterator<String> it = c.iterator();
while (it.hasNext()){
Object s = (String)it.next();
System.out.println(s);
}
}
}
<h2><a id="1__0"></a>1 泛型介绍</h2>
<p>泛型:是JDK5中引入的特性,它提供了编译时类型安全检测机制,该机制允许在编译时检测到非法的类型,它的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数</p>
<p>参数化:将类型由原来的具体的类型参数化,然后再使用/调用时传入具体的类型</p>
<p>这种参数类型可以在类、方法和接口中,分别被称为泛型类、泛型方法、泛型接口</p>
<p><strong>泛型定义格式</strong></p>
<p>1、<泛型> :指定一种类型的格式。这里的类型可以看成是形参</p>
<p>2、<类型1,类型2…>:指定多种类型的格式,多种类型之间用逗号隔开。这里的类型可以看成是形参</p>
<p>3、将来具体调用的时候给定的类型可以看成是形参,并且实参的类型只能是引用数据类型</p>
<p><strong>泛型好处</strong></p>
<p>1、把运行时期的问题提前到了编译时间</p>
<p>2、避免了强制类型转换</p>
<h2><a id="2_Collection_22"></a>2 Collection集合存储字符串并遍历</h2>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-keyword">package</span> Generic;
<span class="hljs-keyword">import</span> java.util.ArrayList;
<span class="hljs-keyword">import</span> java.util.Collection;
<span class="hljs-keyword">import</span> java.util.Iterator;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">GenericDemo</span> {
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">main</span><span class="hljs-params">(String[] args)</span> {
<span class="hljs-comment">// 创建集合对象</span>
<span class="hljs-comment">// Collection c = new ArrayList<>();</span>
Collection<String> c = <span class="hljs-keyword">new</span> <span class="hljs-title class_">ArrayList</span><String>();
<span class="hljs-comment">// 添加元素</span>
c.add(<span class="hljs-string">"hello"</span>);
c.add(<span class="hljs-string">"world"</span>);
c.add(<span class="hljs-string">"java"</span>);
<span class="hljs-comment">// c.add(100); // 自动封装为 Integer</span>
<span class="hljs-comment">// 遍历集合</span>
<span class="hljs-comment">// Iterator it = c.iterator();</span>
Iterator<String> it = c.iterator();
<span class="hljs-keyword">while</span> (it.hasNext()){
<span class="hljs-comment">// obj</span>
<span class="hljs-comment">// Object obj = it.next();</span>
<span class="hljs-comment">// System.out.println(obj);</span>
<span class="hljs-comment">// 变成 String 类型</span>
<span class="hljs-comment">// Object s = (String)it.next();</span>
<span class="hljs-type">Object</span> <span class="hljs-variable">s</span> <span class="hljs-operator">=</span> (String)it.next();
System.out.println(s);
}
}
}
</code></div></pre>
留言