汎用的な運用
3549 ワード
汎用型はJava 1.5の新しい特性で、汎用型の本質はパラメータ化タイプで、つまり間違ったデータ型は1つのパラメータに指定されて、このようなパラメータタイプはクラス、インタフェース、方法の中で作成することができて、それぞれ汎用型クラス、汎用型インタフェース、汎用型方法と呼ばれます
JAvaが汎用型を導入する利点は安全で簡単である.汎用型を導入する前に,タイプObjectの参照によりパラメータの任意化を実現する.その欠点は表示するタイプ変換を行うことである.
規則と制限
汎用型のタイプパラメータはクラスタイプのみ、単純タイプint、charなどではない. そのタイプパラメータは複数のClass
汎用的なパラメータタイプはextendsキーワードを使用することができ、Classは限界のあるタイプと呼ばれている. 汎用パラメータタイプはワイルドカードタイプ、Classclazz = Class.forName("");不確定なタイプ
JAvaが汎用型を導入する利点は安全で簡単である.汎用型を導入する前に,タイプObjectの参照によりパラメータの任意化を実現する.その欠点は表示するタイプ変換を行うことである.
Object o = " ";
String name = (String) o;
規則と制限
汎用型のタイプパラメータはクラスタイプのみ、単純タイプint、charなどではない. そのタイプパラメータは複数のClass
package com.neusoft.kora.cxn.bean;
import java.util.HashMap;
import java.util.Map;
/**
* Created by lenovo on 2015/12/8.
*/
public class Person<T,K,V> {
private Map<K,V> hobbys = new HashMap<K, V>();
private T sex;
void setHobby(K key, V val) {
this.hobbys.put(key, val);
}
void setSex(T sex) {
this.sex = sex;
}
T getSex() {
return sex;
}
public Map<K, V> getHobbys() {
return hobbys;
}
public Person setHobbys(Map<K, V> hobbys) {
this.hobbys = hobbys;
return this;
}
@Override
public String toString() {
return "Person{" +
"hobbys=" + hobbys +
", sex=" + sex +
'}';
}
}
interface Sex{
public String getSex();
}
class Boy implements Sex{
public String getSex(){return "boy";}
@Override
public String toString() {
return getSex();
}
}
class Girl implements Sex{
public String getSex(){return "gril";}
}
class Application{
public static void main(String[] args) {
Person<Sex,Integer,String> person = new Person<Sex, Integer, String>();
person.setHobby(1," ");
person.setHobby(2," ");
person.setSex(new Boy());
System.out.println(person);
}
}
汎用的なパラメータタイプはextendsキーワードを使用することができ、Class
package com.neusoft.kora.cxn.bean;
import java.util.ArrayList;
import java.util.List;
/**
* Created by lenovo on 2015/12/8.
*/
class Money<T extends Number> {
private T val;
public T getVal() {
return val;
}
public Money(T val) {
this.val = val;
}
@Override
public String toString() {
return "Money{" +
"val=" + val +
'}';
}
}
public class Shop {
/**
* .
*/
public <T> T method(T t) {
return t;
}
/**
*
*/
public static <T extends Number> Money<T> showMoney(T money) {
return new Money(money);
}
public static List<?> printHuo(List<? super Huo> huo){
return huo;
}
public static <E> List<E> newArrayList() {
return new ArrayList<E>();
}
//
public static <T> T[] fun1(T...arg){
return arg;
}
public static <T> void fun2(T param[]){ //
System.out.print(" :") ;
for(T t:param){
System.out.print(t + "、") ;
}
}
public static void main(String[] args) {
showMoney(10.222);
List<Money<Double>> x = newArrayList();
}
}
interface Huo{}
extends , , 。
super , , 。