Java汎用の概要


引用汎用(generics)は、Java言語のタイプシステムの拡張であり、タイプ別にパラメータ化できるクラスの作成をサポートします.タイプパラメータは、パラメータ化タイプを使用するときに指定されるタイプのプレースホルダと見なすことができます(メソッドの形式パラメータが実行時に渡される値のプレースホルダのように).
例:Mapクラスでは、最も一般的な場合であっても、特定のタイプ(Stringなど)のオブジェクトを特定のマッピング(map)に保存するために、1つのMapに任意のクラスのオブジェクトを追加できます.因Map.get()はObjectを返すように定義されているので、一般的にMap.get()の結果、次のコードに示すように、強制タイプを所望のタイプに変換します.
Map m = new Hashmap(); 
m.put("key","hello"); 
m.put("value",100.00); 
String s = (String) m.get("key"); 
float n = (float)m.get("value");

汎用表現の使用:
Map<String,Float> m = new Hashmap<String,Float>(); 
m.put("key","hello"); 
String s = m.get("key"); 
float n = m.get("value");

上記の例では、汎用型は、任意のタイプのオブジェクトの適合を実現する能力に類似していると一般的に理解される.
ぶんせき
汎用型、何の役割がありますか?
1.汎用タイプ制約のため、タイプチェックが実行時からコンパイル時に移行すると、タイプエラーによるClassCastExceptionが発生し、議題は事前に問題を発見し、問題を解決します.2.汎用型は、強制型変換ではなく、データをより直接的に表現します.ソースコードの多くの強制タイプ変換を排除することで、コードがより読み取りやすくなり、エラーの機会が減少します.
実現私たちは2つの例を通じて比較説明を行い、汎用的な実現原理と意義を体得した.
class Point { 
        private Object x; 
        private Object y; 
        public Object getX() { 
                return x; 
        } 
        public void setX(Object x) { 
                this.x = x; 
        } 
        public Object getY() { 
                return y; 
        } 
        public void setY(Object y) { 
                this.y = y; 
        } 
} 

public class PointTest { 
        public static void main(String[] args) { 
                Point point = new Point(); 
                point.setX(123);                        //      
                point.setY("  60");        //     Object    ,           
                int x = (Integer) point.getX(); 
                int y = (Integer) point.getY(); 
                System.out.println("x  :" + x); 
                System.out.println("y  :" + y); 
        } 
} 


  : 
Exception in thread "main" java.lang.ClassCastException : java.lang.String cannot be cast to java.lang.Integer at test.PointTest.main( PointTest.java:42 )

汎用インスタンス:
class Point1<T> {                //         
        private T var;                 //          
        private T Yar; 
        public T getVar() { 
                return var; 
        } 
        public void setVar(T var) { 
                this.var = var; 
        } 
        public T getYar() { 
                return Yar; 
        } 
        public void setYar(T yar) { 
                Yar = yar; 
        } 
} 

public class PointTest1 { 
        public static void main(String[] args) { 
                Point1<Object> point = new Point1<Object>(); 
                point.setVar(20); 
                point.setYar("  "); 
                System.out.println("x  :" + point.getVar()); 
                System.out.println("y  :" + point.getYar()); 
        } 
} 

  : 
x  :20 
y  :  

総括は汎型に対する初歩的な理解を通じて、私の汎型に対する理解は、それはいかなるタイプのオブジェクトの適合を実現する能力を持っている.強制タイプ変換ではなく、セット内のデータをより直接的に表現します.
インスタンスは汎用的な初歩的な理解にすぎません.より多くの知識体系を理解する必要があります.自分で資料を調べてください.