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>();
            
        }
        
    }
  • 相关阅读:
    PAT顶级 1015 Letter-moving Game (35分)
    PAT顶级 1008 Airline Routes (35分)(有向图的强连通分量)
    PAT顶级 1025 Keep at Most 100 Characters (35分)
    PAT顶级 1027 Larry and Inversions (35分)(树状数组)
    PAT 顶级 1026 String of Colorful Beads (35分)(尺取法)
    PAT顶级 1009 Triple Inversions (35分)(树状数组)
    Codeforces 1283F DIY Garland
    Codeforces Round #438 A. Bark to Unlock
    Codeforces Round #437 E. Buy Low Sell High
    Codeforces Round #437 C. Ordering Pizza
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6372993.html
Copyright © 2011-2022 走看看