1. 程式人生 > >泛型陣列+泛型巢狀+泛型應用例項

泛型陣列+泛型巢狀+泛型應用例項

泛型陣列

使用泛型方法時,也可以傳遞和返回一個泛型陣列。
【接收和返回泛型陣列】

@SuppressWarnings("unchecked")
public class GeneriseDemo30
{
    public static void main(String args[]){
        //返回泛型陣列
        Integer i[]=fun(1,2,3,4,5,6);
        //輸出陣列內容
        fun2(i);
    }

    //接收可變引數,返回泛型陣列
    public static <T> T[] fun(T...arg){
        return
arg; } public static <T> void fun2(T param[]){ System.out.println("接收泛型陣列:"); for (T t : param ) { System.out.print(t+"、"); } } }

結果:
這裡寫圖片描述

以上程式從fun()方法中返回一個泛型陣列,在fun()方法接收引數是使用了可變引數傳遞方式,然後將fun()返回的泛型陣列給fun2()進行輸出

泛型巢狀

也可以在一個類的泛型中指定另外一個類的泛型。
【定義兩個泛型】

class Info<T,V>
{
    private T var;
    private V value;
    public Info(T var,V value){
        this.setVar(var);
        this.setValue(value);
    }
     public T getVar(){
        return var;
     }

     public void setVar(T var){
        this.var=var;
     }

     public V getValue(){
        return
value; } public void setValue(V value){ this.value=value; } } class Demo<S> { private S info; public Demo(S info){ this.setInfo(info); } public S getInfo(){ return info; } public void setInfo(S info){ this.info=info; } } public class GeneriseDemo31 { public static void main(String args[]){ Demo<Info<String,Integer>> d=null; Info<String,Integer> i=null; i=new Info<String,Integer>("凹凸",22); d=new Demo<Info<String,Integer>>(i); System.out.println("1."+d.getInfo().getVar()); System.out.println("2."+d.getInfo().getValue()); } }

執行結果:
這裡寫圖片描述

例項——泛型應用

使用者在設計類的時候往往會關聯,例如,一個人中可以定義一個資訊的屬性,但是一個人可能有各種各樣的資訊(如聯絡方式、基本資訊)等,所以此資訊屬性的型別就可以通過泛型進行宣告,然後只要設計相應的資訊類即可。
【定義標識介面–資訊】

interface Info
{
    //定義一個標識介面,此介面沒有定義任何方法
}

【定義第一個類–聯絡方式】

class Contact implements Info
{
    private String address;
    private String telphone;
    public Contact(String address,String telphone){
        this.setAddress(address);
        this.setTelphone(telphone);
    }
    public String getAddress(){
        return this.address;
    }
    public void setAddress(String address){
        this.address=address;
    }

    public String getTelphone(){
        return this.telphone;
    }

    public void setTelphone(String telphone){
        this.telphone=telphone;
    }

    public String toString(){
        return "聯絡方式:"+"\n"+
            "\t|--聯絡地址:"+this.address+
            "\t|--聯絡電話:"+this.telphone;
    }
}

【定義第二個類–個人資訊】

class Introduce implements Info
{
    private String name;
    private int age;
    public Introduce(String name,int age){
        this.setName(name);
        this.setAge(age);
    }
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name=name;
    }

    public int getAge(){
        return age;
    }

    public void setAge(int age){
        this.age=age;
    }

    public String toString(){
        return "個人資訊:"+"\n"+
            "\t|--姓名:"+this.name+
            "\t|--年齡:"+this.age;
    }
}

【定義Person類,使用泛型】

class Person<T extends Info>
{
    private T info;
    public Person(T info){
        this.setInfo(info);
    }
    public T getInfo(){
        return this.info;
    }
    public void setInfo(T info){
        this.info=info;
    }

    public String toString(){
        return this.info.toString();
    }
}

測試:

public class GeneriseDemo32
{
    public static void main(String args[]){
        //宣告Person物件,同時指定Contact型別
        Person<Contact> per=null;
        per=new Person<Contact>(new Contact("中國","111111"));
        System.out.println(per);

        //宣告Person物件,同時指定Introduce型別
        Person<Introduce> per2=null;
        per2=new Person<Introduce>(new Introduce("凹凸",20));
        System.out.println(per2);
    }
}

執行結果:
這裡寫圖片描述

相關推薦

陣列++應用例項

泛型陣列 使用泛型方法時,也可以傳遞和返回一個泛型陣列。 【接收和返回泛型陣列】 @SuppressWarnings("unchecked") public class GeneriseDemo30 { public static void

使用swagger-bootstarap-ui 響應類3層顯示的坑

正常一個分頁查詢的介面返回格式應該是 返回   資料統一的封裝類<分頁資料<要展示的資料類>> 得到的也就是一個3層巢狀2層泛型的資料結構! 也就是這樣 其實也就是 PageHelper 提供的 pageInfo 資訊的複製 加上sw

fastjson解析

/** * author zoush * CreateTime 2017-06-03 16:01 * 直接上虛擬碼 */ public class Outer<T> {

Gson和fastJson 解析的json資料

Test /* * { "code": 1, "datas": [{ "address": "深圳",

使用Gson解析複雜的資料結構

一、Gson Gson是由Google自家出來的Json解析庫,使用起來相容性方面當然會有很多優勢,而且解析Json資料也很方便,掌握了Gson的一些基本使用之後就可以使用它解析很多複雜的Json資料了。但當我們要解析一個複雜的資料結構時,比如說List<

如何重構多重“箭頭”程式碼

本文轉載自 酷 殼 – CoolShell 陳皓。 所謂箭頭型程式碼,基本上來說就是下面這個圖片所示的情況。 那麼,這樣“箭頭型”的程式碼有什麼問題呢?看上去也挺好看的,有對稱美。但是…… 關於箭頭型程式碼的問題有如下幾個: 1)我的顯示器不夠寬,箭頭型程式碼縮排太狠了,需

JSON 陣列多層, value值 又是一個JSON陣列

[[{"typets": "1","ans": [{"tu": "3","ans": "","sc": "1"}, {"tu": "4","ans": "","sc": "1"}, {"tu": "7","ans": "","sc": "1"}, {"tu": "8","an

OC陣列和字典練習:省市區

將檔案中的省市區讀出來並放在陣列和字典巢狀的資料結構中 有註釋的版本: #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleas

類以及引用例項

#include class A { private: int m; public: A(){} A(int v){this->m=v;B b(2);b.printn();} void printm(){cout<<"m="<<m<<endl;} class B

“全棧2019”Java第八十七章:類中介面的應用場景(拔高題)

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第八十七章:類中巢狀介面的應用場景(拔高題) 下一章 “全棧2019”Java第八十八章:介

“全棧2019”Java第八十八章:介面中介面的應用場景

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第八十八章:介面中巢狀介面的應用場景 下一章 “全棧2019”Java第八十九章:介面中能定

Python遞迴實現多層dict遍歷例項--三級選單/多級選單功能

要求:構建一個三(N)級選單,實現使用者可以根據指示選擇進入選單,退出選單,返回上層選單功能。知識點:dict資料的遍歷方法,遞迴遍歷方法。環境:Python3.6實現程式碼:#!/usr/bin/evn python # -*-coding:utf8 -*- class m

MATLAB函式的應用

巢狀函式在求解積分上限中的應用 例1如下述積分表示式,已知a、e和l,如何求得β0? 本例關於β的積分結果不能解析表達,需要數值積分來做,同時還要求一個非線性方程。程式碼如下: function sol=example1(a,e,l) f

動態SQL 和 遊標的使用例項

mysql動態執行sql,這邊重點程式碼是: set f_sql=CONCAT('rename table cw_computer_resulttest to cw_computer_result',f_last,';'); set @ms=f_sql;  PREPARE

java 詳解(普通、 萬用字元、 介面,陣列方法,

JDK1.5 令我們期待很久,可是當他釋出的時候卻更換版本號為5.0。這說明Java已經有大幅度的變化。本文將講解JDK5.0支援的新功能-----Java的泛型. 1、Java泛型  其實Java

Java--應用--介面、方法、陣列

1、泛型介面 1.1泛型介面的基本概念 1.2泛型介面實現的兩種方式 定義子類:在子類的定義上也宣告泛型型別 interface Info<T>{ // 在介面上定義泛型 pub

Java 知識點整理-10.Java集合框架 去除ArrayList中重複字串、自定義物件 棧和佇列 JDK5新特性 asList() toArray(T[] a) ArrayList迴圈

詳細標題:去除ArrayList中重複字串、自定義物件元素方式 棧和佇列 泛型 JDK5新特性(增強for迴圈 三種迭代(普通for、迭代器、增強for)中的元素能否刪除 靜態匯入 可變引數)Arrays工具類的asList() Collection中toArray(T[] a) 集合巢狀之Arra

16 API-集合(List的子類(ArrayList_Vector_LinkedList,集合遍歷),JDK5新特性(,增強for迴圈,靜態匯入,可變引數)

1:List的子類(掌握) (1)List的子類特點ArrayList:底層資料結構是陣列,查詢快,增刪慢執行緒不安全,效率高Vector:底層資料結構是陣列,查詢快,增刪慢執行緒安全,效率低LinkedList:底層資料結構是連結串列,查詢慢,增刪快執行緒不安全,效率高

fastjson反序列化類為對應實體類 ResultObject的反序列化及優化

內部類反序列化問題 工程中,常常使用ResultObject類或者Msg類作為通用返回型別 @Data public class Msg { private String type; //data欄位,Object型別,通常需要轉換為對應實體類

java-ArrayList中去重複字串或重複物件、LinkedList集合、、增強for、靜態匯入、可變引數、asList()方法、集合

1、去除ArrayList中重複字串元素方式  * A:案例演示     * 需求:ArrayList去除集合中字串的重複值(字串的內容相同)     * 思路:建立新集合方式     /**     * A:案例演示     * 需求:ArrayList去除集合中字串的重複值(字串的內容相同)