第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

如何將枚舉干凈地鏈接到類中的靜態(tài)信息?

如何將枚舉干凈地鏈接到類中的靜態(tài)信息?

qq_笑_17 2021-11-17 17:02:06
為了清楚起見,我將盡我所能通過一個(gè)例子的鏡頭而不是代碼轉(zhuǎn)儲來構(gòu)建問題。在進(jìn)入我的例子之前,我的問題如下:如何編寫一個(gè)以枚舉為參數(shù)的方法,并返回存儲在對象中的靜態(tài)信息(從公共父級繼承,其中定義了靜態(tài)信息)。這個(gè)例子:我正在創(chuàng)建一個(gè)包含許多玩家技能的游戲。這些技能是通過對象樹創(chuàng)建的,具有以下繼承性(SomeSkill 代表十幾個(gè)技能中的任何一個(gè)):技能 > 主動技能 > SomeSkill 和 技能 > PassiveSkill > SomeSkill類技能的偽代碼:    Class Skill{       static string name = "Default Skill"       int level;       Skill(int level){          this.level = level;       }       static getName{          return name;       }    }名稱是靜態(tài)的,因?yàn)闊o論實(shí)例如何,技能的名稱都不應(yīng)更改。在我的實(shí)際實(shí)現(xiàn)中,Skill 還包括靜態(tài)信息description和id。enum 的實(shí)際實(shí)現(xiàn):   public enum SkillType   {     basic, speed_buff, leap, beat_down   }問題:我正在努力做的是編寫一個(gè)方法,將 SkillType 枚舉作為參數(shù),并返回一個(gè)可用的 Skill 對象(不是 Skill 對象的實(shí)例)在偽代碼中:例如,如果我想遍歷 Enum 并打印出所有技能的名稱......    method getSkillClass(SkillType skillType){       if(skillType == beat_down) return BeatDown       if(skillType == leap) return Leap       ...    }    for(e : SkillType.getKeys){       print(getSkillClass(e).getName);    }我當(dāng)前的“解決方案”是創(chuàng)建一個(gè)映射,將 SkillType 與實(shí)例化技能列表相匹配,并將所有非靜態(tài)技能信息設(shè)置為默認(rèn)值。但這似乎是對系統(tǒng)的濫用。如何將我的枚舉列表干凈地鏈接到我的各種技能類中的靜態(tài)信息(非靜態(tài)信息可以忽略)?
查看完整描述

2 回答

?
LEATH

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊

Java 枚舉允許使用構(gòu)造函數(shù)將數(shù)據(jù)關(guān)聯(lián)到枚舉:


class Skill {

    ...

}


public enum SkillType {

    Basic(new Skill(...)),

    SpeedBuff(new Skill(...)),

    Leap(new Skill(...)),

    ...


    private final Skill skill;


    public SkillType(Skill skill) {

        this.skill = skill;

    }


    public Skill getSkill() {

        return skill;

    }

}

有關(guān)更多信息,請查看官方枚舉文檔中的“Planet”示例。


查看完整回答
反對 回復(fù) 2021-11-17
?
繁華開滿天機(jī)

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊

正如@Alex 提到的,您可以使用 enum 構(gòu)造函數(shù),但Class如果您不想創(chuàng)建實(shí)例,則可以鏈接類型而不是創(chuàng)建用于鏈接的實(shí)例:


public enum SkillType {

    Basic(Basic.class),

    SpeedBuff(SpeedBuff.class),

    Leap(Leap.class),

    ...


    private final Class skillClass;


    public skillClass(Class skillClass) {

        this.skillClass = skillClass;

    }


    public Class getSkillClass() {

        return skillClass;

    }

}

然后,可以使用反射技術(shù)來獲取靜態(tài)字段的信息,說明這里。


查看完整回答
反對 回復(fù) 2021-11-17
  • 2 回答
  • 0 關(guān)注
  • 168 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號