精华内容
下载资源
问答
  • gson 解析泛型和将泛型转为json字符
  • Java泛型中的标记符含义: E - Element (集合使用,因为集合存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number(数值类型)? - 表示不确定的java类型 S、U、V - ...

    Java泛型中的标记符含义: 

     E - Element (在集合中使用,因为集合中存放的是元素)

     - Type(Java 类)

     - Key(键)

     - Value(值)

     - Number(数值类型)

    ? -  表示不确定的java类型

     S、U、V  - 2nd、3rd、4th types

    遇到<A>,<B>,<K,V>等,是用到了java中的泛型。 

    一般使用<T>来声明类型持有者名称,自定义泛型类时,类持有者名称可以使用T(Type) 
    如果是容器的元素可以使用E(Element),若键值匹配可以用K(Key)和V(Value)等, 
    若是<?>,则是默认是允许Object及其下的子类,也就是java的所有对象了。
     

    所以说,如果是字每A,B,C,D...定义的,就是泛型,这里T只是名字上的意义而已T---type,E----Element 
    K----key, V----value 
    如果是?定义的,就是普通的Object或者其子类 

    举例说明: 
    Set<T> 表示 集合里 是   T类的实例 
    List<E> 表示  集合里 是  E类的实例 
    List<?> 表示 集合里的对象类型不确定,未指定 
    List 同 List<?> 是一样的。
     

    泛型的作用:  
    1、用泛型: 
    Java代码   收藏代码
    1. List<T> list=new ArrayList<T>();  
    2. T t=list.get(0);  

    2、不用泛型: 
    Java代码   收藏代码
    1. List  list=new ArrayList();  
    2. T t=(T)list.get(0);  

    相信你已经看出: 
    a、用泛型只是确定了集合内的元素的类型,但却是在编译时确定了元素的类型再取出来时已经不再需要强转, 
    增强程序可读性,稳定性和效率 
    b、不用泛型时,如果是装入集合操作,那么元素都被当做Object对待,失去自己的类型,那么从集合中取出来时, 

    往往需要转型,效率低,容易产生错误 

      不再需要强制转型; 


    展开全文
  • json字符串转化为list泛型的源码demo,项目包括需要运行的jsonjar包
  • import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import lombok.Data; public class Type { @Data public static class Response<T>... private T .
    import com.alibaba.fastjson.JSONObject;
    import com.alibaba.fastjson.TypeReference;
    import lombok.Data;
    
    public class Type {
    
        @Data
        public static class Response<T> {
            private Integer code;
            private String msg;
            private T data;
        }
    
        @Data
        public static class Student {
            private String name;
            private String no;
        }
    
        public static void main(String[] args) {
            String ret = "{\"code\":-1,\"msg\":\"参数不合法\",\"data\":{\"name\":\"小明\",\"no\":\"123456\"}}";
            Response<Student> response = JSONObject.parseObject(ret, new TypeReference<Response<Student>>(){});
            System.out.println(response.getData().getNo());
            System.out.println(response.getData().getName());
        }
    }

    展开全文
  • 主要介绍了Redis缓存,泛型集合与json字符串的相互转换实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Java 泛型

    千次阅读 2019-07-13 15:38:24
    是 JDK 5 引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员编译时检测到非法的类型。 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 假定我们有这样一个需求:写...

    java 泛型(generics)

    是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
    泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

    假定我们有这样一个需求:写一个排序方法,能够对整型数组、字符串数组甚至其他任何类型的数组进行排序,该如何实现?

    答案是可以使用 Java 泛型。

    使用 Java 泛型的概念,我们可以写一个泛型方法来对一个对象数组排序。然后,调用该泛型方法来对整型数组、浮点数数组、字符串数组等进行排序。

    泛型方法

    你可以写一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。

    下面是定义泛型方法的规则:

    所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(在下面例子中的)。
    每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。
    类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。
    泛型方法体的声明和其他方法一样。注意类型参数只能代表引用型类型,不能是原始类型(像int,double,char的等)。
    实例
    下面的例子演示了如何使用泛型方法打印不同字符串的元素:

    public class GenericMethodTest
    {
       // 泛型方法 printArray                         
       public static < E > void printArray( E[] inputArray )
       {
          // 输出数组元素            
             for ( E element : inputArray ){        
                System.out.printf( "%s ", element );
             }
             System.out.println();
        }
     
        public static void main( String args[] )
        {
            // 创建不同类型数组: Integer, Double 和 Character
            Integer[] intArray = { 1, 2, 3, 4, 5 };
            Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
            Character[] charArray = { 'H', 'E', 'L', 'L', 'O' };
     
            System.out.println( "整型数组元素为:" );
            printArray( intArray  ); // 传递一个整型数组
     
            System.out.println( "\n双精度型数组元素为:" );
            printArray( doubleArray ); // 传递一个双精度型数组
     
            System.out.println( "\n字符型数组元素为:" );
            printArray( charArray ); // 传递一个字符型数组
        } 
    }
    

    编译以上代码,运行结果如下所示:

    整型数组元素为:
    1 2 3 4 5

    双精度型数组元素为:
    1.1 2.2 3.3 4.4

    字符型数组元素为:
    H E L L O

    有界的类型参数:

    可能有时候,你会想限制那些被允许传递到一个类型参数的类型种类范围。例如,一个操作数字的方法可能只希望接受Number或者Number子类的实例。这就是有界类型参数的目的。

    要声明一个有界的类型参数,首先列出类型参数的名称,后跟extends关键字,最后紧跟它的上界。

    实例
    下面的例子演示了"extends"如何使用在一般意义上的意思"extends"(类)或者"implements"(接口)。该例子中的泛型方法返回三个可比较对象的最大值。

    public class MaximumTest
    {
       // 比较三个值并返回最大值
       public static <T extends Comparable<T>> T maximum(T x, T y, T z)
       {                     
          T max = x; // 假设x是初始最大值
          if ( y.compareTo( max ) > 0 ){
             max = y; //y 更大
          }
          if ( z.compareTo( max ) > 0 ){
             max = z; // 现在 z 更大           
          }
          return max; // 返回最大对象
       }
       public static void main( String args[] )
       {
          System.out.printf( "%d, %d 和 %d 中最大的数为 %d\n\n",
                       3, 4, 5, maximum( 3, 4, 5 ) );
     
          System.out.printf( "%.1f, %.1f 和 %.1f 中最大的数为 %.1f\n\n",
                       6.6, 8.8, 7.7, maximum( 6.6, 8.8, 7.7 ) );
     
          System.out.printf( "%s, %s 和 %s 中最大的数为 %s\n","pear",
             "apple", "orange", maximum( "pear", "apple", "orange" ) );
       }
    }
    

    编译以上代码,运行结果如下所示:

    3, 4 和 5 中最大的数为 5

    6.6, 8.8 和 7.7 中最大的数为 8.8

    pear, apple 和 orange 中最大的数为 pear

    泛型类

    泛型类的声明和非泛型类的声明类似,除了在类名后面添加了类型参数声明部分。

    和泛型方法一样,泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。因为他们接受一个或多个参数,这些类被称为参数化的类或参数化的类型。

    实例
    如下实例演示了我们如何定义一个泛型类:

    public class Box<T> {
       
      private T t;
     
      public void add(T t) {
        this.t = t;
      }
     
      public T get() {
        return t;
      }
     
      public static void main(String[] args) {
        Box<Integer> integerBox = new Box<Integer>();
        Box<String> stringBox = new Box<String>();
     
        integerBox.add(new Integer(10));
        stringBox.add(new String("菜鸟教程"));
     
        System.out.printf("整型值为 :%d\n\n", integerBox.get());
        System.out.printf("字符串为 :%s\n", stringBox.get());
      }
    }
    

    编译以上代码,运行结果如下所示:

    整型值为 :10

    字符串为 :菜鸟教程

    类型通配符

    1、类型通配符一般是使用?代替具体的类型参数。例如 List<?> 在逻辑上是List,List 等所有List<具体类型实参>的父类。

    实例

    import java.util.*;
     
    public class GenericTest {
         
        public static void main(String[] args) {
            List<String> name = new ArrayList<String>();
            List<Integer> age = new ArrayList<Integer>();
            List<Number> number = new ArrayList<Number>();
            
            name.add("icon");
            age.add(18);
            number.add(314);
     
            getData(name);
            getData(age);
            getData(number);
           
       }
     
       public static void getData(List<?> data) {
          System.out.println("data :" + data.get(0));
       }
    }
    

    输出结果为:

    data :icon
    data :18
    data :314
    解析: 因为getData()方法的参数是List类型的,所以name,age,number都可以作为这个方法的实参,这就是通配符的作用

    2、类型通配符上限通过形如List来定义,如此定义就是通配符泛型值接受Number及其下层子类类型。

    实例

    import java.util.*;
     
    public class GenericTest {
         
        public static void main(String[] args) {
            List<String> name = new ArrayList<String>();
            List<Integer> age = new ArrayList<Integer>();
            List<Number> number = new ArrayList<Number>();
            
            name.add("icon");
            age.add(18);
            number.add(314);
     
            //getUperNumber(name);//1
            getUperNumber(age);//2
            getUperNumber(number);//3
           
       }
     
       public static void getData(List<?> data) {
          System.out.println("data :" + data.get(0));
       }
       
       public static void getUperNumber(List<? extends Number> data) {
              System.out.println("data :" + data.get(0));
           }
    }
    

    输出结果:

    data :18
    data :314
    解析: 在(//1)处会出现错误,因为getUperNumber()方法中的参数已经限定了参数泛型上限为Number,所以泛型为String是不在这个范围之内,所以会报错

    3、类型通配符下限通过形如 List<? super Number>来定义,表示类型只能接受Number及其三层父类类型,如 Object 类型的实例。

    展开全文
  • JSON字符串转泛型类型

    2020-07-08 19:52:44
    1、定义一个泛型对象HttpResult 2、将返回的JSON字符串解析成该类型,然后进行后续业务处理 /** * 泛型转型 * @param json JSON字符串 * @param clazz 类型 * @param 泛型 * @return 转换之后的泛型 */ private ...

    1、定义一个泛型对象HttpResult

    2、将返回的JSON字符串解析成该类型,然后进行后续业务处理

    /**
    * 泛型转型
    * @param json JSON字符串
    * @param clazz 类型
    * @param 泛型
    * @return 转换之后的泛型
    */
    private static HttpResult parseHttpResult(String json, Class clazz) {
    return JSONObject.parseObject(json, new TypeReference<HttpResult>(clazz) {
    });
    }

    展开全文
  • JAVA泛型

    千次阅读 2019-09-19 21:15:47
    泛型提供了编译时类型安全检测机制,该机制允许程序员编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。比如我们要写一个排序方法,能够对整型数组、字符串数组甚至...
  • package examPro; import java.lang.reflect.Method; import java.util.ArrayList; /* 题目1、 ArrayList<Integer> list = new ArrayList&...这个泛型为Integer的ArrayList存放一个String类型的对象。 ...
  • 使用官方提供的TypeReference转换泛型对象 import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import lombok.Data; public class Type { @Data public static class ...
  • 本文主要介绍了C#利用LINQ to XML与反射把任意类型的泛型集合转换成XML格式字符串的方法:利用反射,读取一个类型的所有属性,然后再把属性转换成XML元素的属性或者子元素。下面注释比较完整,需要的朋友可以看下
  • C# 泛型参数转换

    2020-08-31 11:51:41
    本文介绍了C# 泛型参数转换的相关知识,具有很好的参考价值,下面跟着小编一起来看下吧
  • 1、pom.xml引入fastjson依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson<...2、定义泛型类 ① ApiReponse.java import lombok.Data; @Data pu
  • 根据泛型解析json字符

    千次阅读 2015-08-05 17:15:22
    java,经常用到泛型,下面用实例说一下怎么把json字符串转换为对应的泛型。 父类:parentClass 子类:childClass extends parentClass childClass child = new childClass(); 父类根据泛型解析...
  • C#从字符串变量获取类型并在泛型方法使用它(C# Getting Type out of a string variable and using it in generic method) I want to be able to get the actual Type of a string value I receive by some ...
  • /// /// 将字符串转化为指定类型 /// /// 指定的类型 /// 需要转换的字符串 /// <returns></returns> pub
  • Here's a list of articles explaining generic types in Delphi with usage examples: 这是解释使用Delphi泛型类型和用法示例的文章列表: 什么以及为什么以及如何Delphi中泛型 ( What and Why and How on ...
  • 使用 FastJson转换字符串为带泛型属性的对象,报错 cannot be cast to xxx(带泛型属性的类) 解决办法 1.先获取到解析对象的 泛型属性值,转成Json字符串 2.将此字符串再利用Json工具类转换为对象 举例 举例用...
  • 实体类 @Data @NoArgsConstructor @AllArgsConstructor @Builder public class PageQueryParam<T> { private T query;... private Integer pageNum = 1;... private Integer ...待转换的JSON字符串 { "query": {
  • Type listType = new TypeToken<ArrayList<Pwd>>() {}.getType(); 本文转自 netcorner 博客园博客,原文链接: http://www.cnblogs.com/netcorner/p/5149517.html ,如需转载请自行联系原作者 ... ...
  • MethodInfo mi = typeof(泛型方法所在的类(非泛型类)).GetMethod("泛型方法名"); object[] invokeArgs = new object[] { 泛型方法参数1,泛型方法参数2,...}; mi.MakeGenericMethod(new Type[] { type }).In...
  • 什么是泛型泛型最常与集合使用,因为泛型最开始开始被加入Java就是为了解决集合...集合中泛型的使用 List使用泛型 我们创建集合时使用<>来声明List集合只能保存Dog类对象 List dogs=new ArrayList<>
  • JSON字符串转泛型对象

    2020-07-03 17:56:23
    ReferenceConfig reference = null; ObjectMapper mapper = new ObjectMapper();... } catch (Exception e) { } 将阿里dubbo的ReferenceConfig对象从缓存获取出对应的json字符串后,将其转换为ReferenceConfig对象
  • 原来是这样的:Map, String> aaa = new HashMap, String>(); 现在是这样的: String type = "String"; Map(type), do_something(type)> aaa = new HashMap(type), do_something(type)>(); 问题是: ...
  • Java语言高分悬赏,怎么使用泛型的方式,实现字符串、数字、浮点的排序和求最大最小值,一共是3个程序
  • Dictionary<string, object> jd = js.Deserialize<Dictionary<... item为json字符串 {'cProPic':'/companypic/20160914121309517.jpg','cProName':'普斯灰'} 取值 jd["cProPic"] 转载...
  • 主要介绍了java的Jackson将json字符串转换成泛型List ,这里整理了详细的代码,有需要的小伙伴可以参考下。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 118,202
精华内容 47,280
关键字:

在泛型中可用的字符