【続き】Java変数タイプ認識の3つの方式(補足)


本稿は『Java変数タイプ認識の3つの方式』の補足です
皆さんの大牛と友达の指摘とヒントを経て、足りないところが多いと思って、補足の文章を書きました.
この文書は個人ブログ(テスト版)に更新されました
 
コンテンツガイド
  • 反射方式、メンバー変数のタイプ判定
  • isInstance用法
  • 汎用識別タイプ
  • を利用する.
    テストクラス:
    package com.cxyapi.oo;
    
    import java.util.Date;
    
    import com.cxyapi.generics.TypeToolsGenerics;
    
    /**          
     * @author cxy @ www.cxyapi.com
     */
    public class TypeToolsTest2
    {
    	private static int ii=0;
    	private static Date d=new Date();
    	
    	public static void main(String[] args) throws Exception
    	{
    		//   :         
    		System.out.println(TypeToolsTest2.class.getDeclaredField("ii").getType()); 
    		System.out.println(TypeToolsTest2.class.getDeclaredField("d").getType()); 
    		System.out.println("----------------------");
    		
    		//   :isInstance        ,        
    		System.out.println(Integer.class.isInstance(ii));
    		System.out.println(Date.class.isInstance(d));
    		System.out.println("----------------------");
    		
    		//   :        
    		System.out.println(TypeToolsGenerics.getType(ii));
    		System.out.println(TypeToolsGenerics.getType(2.2));
    		System.out.println(TypeToolsGenerics.getType(true));
    		System.out.println(TypeToolsGenerics.getType('a'));
    		System.out.println(TypeToolsGenerics.getType(d));
    	}
    }
    

     
    汎用方式タイプ識別ツール:
    package com.cxyapi.generics;
    
    import java.util.HashMap;
    import java.util.Map;
    
    
    /**          
     * @author cxy @ www.cxyapi.com
     */
    public class TypeToolsGenerics
    {
    	private static final Map<String,String> typeMap=new HashMap<String,String>();
    	static
    	{
    		typeMap.put("java.lang.Byte", "byte");
    		typeMap.put("java.lang.Short", "short");
    		typeMap.put("java.lang.Integer", "int");
    		typeMap.put("java.lang.Long", "long");
    		typeMap.put("java.lang.Double", "double");
    		typeMap.put("java.lang.Float", "float");
    		typeMap.put("java.lang.Character", "char");
    		typeMap.put("java.lang.Boolean", "boolean");
    	}
    	public final static <T> String getType(T t)
    	{
    		if(t==null){return null;}
    		String typeInfo=t.getClass().getName();
    		return typeMap.containsKey(typeInfo)?typeMap.get(typeInfo):typeInfo; 
    	}
    }
    

     
    宣言:
    1.オリジナルの文章、転載は明記して本文に接続してください.
    2.文章は個人の愚見を反映し、異議があれば討論の指摘を歓迎する
    3.もっと詳しくは私の  個人ブログ(テスト版)