zoukankan      html  css  js  c++  java
  • 自定义泛型

    /*
     需求: 定义一个方法可以接收任意类型的参数,而且返回值类型必须 要与实参的类型一致。
     
     自定义泛型:  自定义泛型就是一个数据类型的占位符或者是一个数据类型的变量。
     
     方法上自定义泛型:
         
         修饰符      <声明自定义的泛型>返回值类型    函数名(使用自定义泛型 ...){
         
         }
    
     
    在泛型中不能使用基本数据类型,如果需要使用基本数据类型,那么就使用基本数据类型对应的包装类型。
    
     byte----> Byte
     short---> Short 
     int----> Integer
     long----> Long 
     
     double ----> Double 
     float -----> Float
     
     boolean-----Boolean
     
     char-------》 Character 
     
     
     方法泛型注意的事项:
         1. 在方法上自定义泛型,这个自定义泛型的具体数据类型是在调用该 方法的时候传入实参时确定具体的数据类型的。
         2. 自定义泛型只要符合标识符 的命名规则即可, 但是自定义泛型我们一般都习惯使用一个大写字母表示。  T Type  E Element
         
     */
    
    
    public class Demo2 {
    
        public static void main(String[] args) {
            String str = getData("abc");
            Integer i = getData(123);
        }
        
        
        public static <abc>abc getData(abc o){
            
            return o;
        }
    }
    import java.util.ArrayList;
    
    /*
     需求: 编写一个数组 的工具类
     
     泛型类:
     
    泛型类的定义格式:
        
        class 类名<声明自定义泛型>{
        
        }
     
    泛型类要注意的事项:
         1. 在类上自定义泛型的具体数据类型是在使用该类的时候创建对象时候确定的。
         2. 如果一个类在类上已经声明了自定义泛型,如果使用该类创建对象 的时候没有指定 泛型的具体数据类型,那么默认为Object类型
         3.在类上自定义泛型不能作用于静态的方法,如果静态的方法需要使用自定义泛型,那么需要在方法上自己声明使用。
     
     
     
     */
    
    class MyArrays<T>{
        
    
        //元素翻转
        public void reverse(T[] arr){
            for(int startIndex = 0, endIndex = arr.length-1 ; startIndex<endIndex ; startIndex++,endIndex--){
                T temp  = arr[startIndex];
                arr[startIndex] = arr[endIndex];
                arr[endIndex] = temp;
            }
            
        }
        
        //
        public String toString(T[] arr){
            StringBuilder sb = new StringBuilder();
            for(int i = 0 ; i < arr.length ; i++){
                if(i==0){
                    sb.append("["+arr[i]+",");
                }else if(i==arr.length-1){
                    sb.append(arr[i]+"]");
                }else{
                    sb.append(arr[i]+",");
                }
            }
            return sb.toString();
        }
        
        
        public static <T>void print(T[] t){
            
        
            
        }
        
        
    }
    
    
    
    public class Demo3 {
        
        public static void main(String[] args) {
            Integer[] arr = {10,12,14,19};
            
            MyArrays<Integer> tool = new MyArrays<Integer>();
            tool.reverse(arr);
            System.out.println("数组的元素:"+tool.toString(arr));
            
            MyArrays<String> tool2 = new MyArrays<String>();
            String[] arr2 = {"aaa","bbb","ccc"};
            tool2.reverse(arr2);
                    
            
            ArrayList<String> list = new ArrayList<String>();
            
        }
        
    }
  • 相关阅读:
    MongDB in Rails 3 using mongo_mapper
    Cucumber + Capybara What we need for rails integration test
    HTML5 drag & drop 拖拽与拖放简介
    Installing GitLab 2.1 on Centos 6
    CakePHP的belongsTo关系中关于外键关联字段都不是id字段的问题
    Mod_rewrite in Cakephp using Apache
    How to Configure Static IP Address on CentOS 6.3 Linux Server
    mongoDB 入门指南、示例
    MVC3/4项目开发中遇到的ajax提交Json数据到后台Controller处理(接收参数)
    ASP.NET jQuery (表单中使用回车在TextBox之间向下移动)
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6372993.html
Copyright © 2011-2022 走看看