父类中能否实现一个方法(方法中的参数是子类中定义的成员),使得子类都能继承该方法

发布于 2022-09-06 13:23:14 字数 1051 浏览 25 评论 0

能不能在父类中实现一个方法,使得每一个子类都具有该“类型”的方法,只是不同的子类中该方法的参数都是自己定义的成员变量。

代码,如下,创建了一个枚举,枚举对象中的属性是 值-中文描述的对应,希望输入一个值,马上获取到对应的中文描述

package com.manager.enumeration;

public enum Enum2  {

    SMALL(100, "s"),MEDIUM(101, "m"),LARGE(102, "l"),HUGE(103, "h");
    /**
     * code 与 中文描述 进行一一对应
     * 输入 code 的值获取到对应的中文
     * @param code
     * @return
     */
    public String getMessageByCode(int code){
        Enum2 [] enmu2s = Enum2.values();
        for(Enum2 enum2 : enmu2s){
            if(enum2.getCode() == code){
                return enum2.getMessage();
            }
        }
        return "";
    }

    Enum2(int code, String message){
        this.code = code;
        this.message = message;
    }

    private int code;
    private String message;


    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
    
}

如上,希望自己创建的枚举都具有这样的的功能 getMessageByCode,类似于每一个枚举都具有的vlaues()方法,但是找不到value的实现方式,所以想写一个抽象类来实现该功能,由枚举来继承这个抽象类,不知道是否可行

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

メ斷腸人バ 2022-09-13 13:23:14

ioc控制反转,你值得拥有。

山川志 2022-09-13 13:23:14

enum类是无法被继承的,编译器会自动把枚举用继承enum类来表示,但这一过程是由编译器完成的,枚举也不过是个语法糖。被声明为枚举以后其实跟定义了一个类差不多,比如可以有构造方法什么的。
因为枚举不可能被继承,因此写抽象类的想法不可以实现,但是枚举可以实现接口,所有两种方法如下:

public interface SubEnum   {
    public String getMessageByCode(int code);
}
public enum Enum2 implements SubEnum {
;

@Override
public String getMessageByCode(int code) {
    // TODO Auto-generated method stub
    return null;
}
}

或者

在本方法中添加所需的方法,也就是你上面的方式:

public enum Enum2 {

SMALL(100, "s"),MEDIUM(101, "m"),LARGE(102, "l"),HUGE(103, "h");
/**

code 与 中文描述 进行一一对应
输入 code 的值获取到对应的中文
@param code
@return
*/
public String getMessageByCode(int code){

Enum2 [] enmu2s = Enum2.values();
    for(Enum2 enum2 : enmu2s){
    if(enum2.getCode() == code){
        return enum2.getMessage();
    }
}
return "";
}

Enum2(int code, String message){

this.code = code;
this.message = message;
}

private int code;
private String message;

public int getCode() {

return code;
}

public String getMessage() {

    return message;
}

}
方法三:
改写java.lang.Enum:

给java.lang.Enum添加一个方法或者继承一个类,







~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文