有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将值传递给方法?

在下面的代码中,我正在硬编码USER_AND_ADMIN

this.contentUrl.getUtils().createType(url, user, content,USER_AND_ADMIN);

USER_AND_ADMIN将根据情况而变化;我可能需要传递的其他类型是USERADMINNONE

有人能帮忙吗


共 (2) 个答案

  1. # 1 楼答案

    创建这样的枚举

    public enum UserType {
        USER_AND_ADMIN, USER, ADMIN, NONE;
    }
    

    然后在方法声明中使用它:

    ... methodName(... , UserType userType, ...) { ...
    

    调用该方法时,只需执行以下操作:

    this.contentUrl.getUtils().createType(url, user, content, UserType.USER_AND_ADMIN);
    

    在该方法中,您可以使用#name()方法获得String表示:

    String userTypeAsString = userType.name();
    

    默认情况下,字符串表示形式与变量的名称相同,因此,如果不定义自己的#toString(),它与#name()完全相同。如果需要自定义表示,请编写自己的#toString(),并使用它代替#name()

    只要适用,我更喜欢使用#name(),因为它是Enumfinal方法,所以您可以确保它不会被重写

    更新:

    如果你真的不想使用enums(尽管我无法理解为什么),你可以使用普通的字符串常量:

    private static final String USER_AND_ADMIN = "USER_AND_ADMIN";
    

    然后,你可以在价值观上进行分支:

    if (userType.equals(USER_AND_ADMIN)) {
        ....
    }
    

    或者,如果您使用的是Java 7或更新版本:

    switch (userType) {
        case USER_AND_ADMIN:
            // ...
            break;
        case NONE:
            // ...
            break;
        default:
            break;
    }
    

    如果您使用的是enum,那么这个开关也可以在Java7下工作

  2. # 2 楼答案

    你可以使用ENUMS

    比如首先创建一个枚举

    public enum MyEnumValues{
          USER_AND_ADMIN,
          USER,
          ADMIN,
          NONE
    }
    

    然后使条件代码基于枚举工作:

    MyEnumValues resultScenario = MyEnumValues.NONE;
    if(scenaio1)
    {
           resultScenario = MyEnumValues.USER_AND_ADMIN;
    }else if(scenario2)
           resultScenario = MyEnumValues.USER;
    }
    
    //use and pass it to your method (you might have to change your method signature):
    this.contentUrl.getUtils().createType(url, user, content,resultScenario );