1. 程式人生 > >java 內部類例項化方式

java 內部類例項化方式

1、java成員和靜態內部類的使用,適用類本身適用,旨在減少檔案個數和方便維護管理;

2、匿名內部類方便不同業務實現下的靈活使用;

3、區域性內部類,跟匿名內部類相仿,但功能不同。

本文著重講:

①java成員內部類和靜態內部類的例項化方式,

②內部類的方法呼叫方式

程式碼實現如下:

package com.innerClass;

import com.google.gson.Gson;

/**
 * Created by Liuxd on 2018-09-06.
 */
public class TestInnerClass {
    private static final Gson gson = new Gson();

    public static void main(String[] args) {
        /**
         * 外部類
         */
        User user = new User();
        user.setName("Jack");
        user.setAge(22);

        /**
         * 建立內部類物件
         */
        User.BankInfo bankInfo = user.new BankInfo();
        bankInfo.setBankName("中國工商銀行");
        bankInfo.setBankNo("15801122225553669");

        String json = gson.toJson(user);
        System.out.println(json);
        System.out.println("---------------------------------------------------------");

        user.setBankInfo(bankInfo);
        json = gson.toJson(user);
        System.out.println(json);
        System.out.println("---------------------------------------------------------");

        /**
         * 建立靜態內部類物件
         */
        User.Org org = new User.Org();
        org.setOrgCode("ceo");
        org.setOrgName("總裁辦公室");
        org.print();

        System.out.println("---------------------------------------------------------");

        user.setOrg(org);
        json = gson.toJson(user);
        System.out.println(json);

    }

}

外部類/內部類:

package com.innerClass;

/**
 * Created by Liuxd on 2018-09-06.
 */
public class User {
    private String name;
    private int age;

    private BankInfo bankInfo;

    private Org org;

    class BankInfo {
        private String bankNo;
        private String bankName;

        public String getBankNo() {
            return bankNo;
        }

        public void setBankNo(String bankNo) {
            this.bankNo = bankNo;
        }

        public String getBankName() {
            return bankName;
        }

        public void setBankName(String bankName) {
            this.bankName = bankName;
        }
    }

    static class Org {
        private String orgCode = "";
        private String orgName = "";

        public void print() {
            System.out.println("機構編碼:" + orgCode + ",機構名稱:" + orgName);
        }

        public String getOrgCode() {
            return orgCode;
        }

        public void setOrgCode(String orgCode) {
            this.orgCode = orgCode;
        }

        public String getOrgName() {
            return orgName;
        }

        public void setOrgName(String orgName) {
            this.orgName = orgName;
        }
    }

    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 BankInfo getBankInfo() {
        return bankInfo;
    }

    public void setBankInfo(BankInfo bankInfo) {
        this.bankInfo = bankInfo;
    }

    public Org getOrg() {
        return org;
    }

    public void setOrg(Org org) {
        this.org = org;
    }
}

列印結果:

{"name":"Jack","age":22}
---------------------------------------------------------
{"name":"Jack","age":22,"bankInfo":{"bankNo":"15801122225553669","bankName":"中國工商銀行"}}
---------------------------------------------------------
機構編碼:ceo,機構名稱:總裁辦公室
---------------------------------------------------------
{"name":"Jack","age":22,"bankInfo":{"bankNo":"15801122225553669","bankName":"中國工商銀行"},"org":{"orgCode":"ceo","orgName":"總裁辦公室"}}