gpt4 book ai didi

java - 与标志中的逻辑运算符一起使用的两个枚举的平方

转载 作者:行者123 更新时间:2023-12-02 05:53:58 24 4
gpt4 key购买 nike

所以,我有这个枚举:

public enum Loglevel {
ERROR, WARNING, NOTICE, VERBOSE, INFO;
}

我想要这样的类(class):

public class Log {
public statoc Loglevel level = Loglevel.ERROR | Loglevel.WARNING | Loglevel.NOTICE | Loglevel.VERBOSE | Loglevel.INFO;
public static void log(String message, Loglevel lvl) {
if(level & lvl) {
System.out.println(message);
}
}

当然,请理解Loglevel.ERROR | Loglevel.WARNING 是一个错误,但我需要类似的东西 - 而且我对 java 使用的所有特殊方法都很陌生。

如果不出意外,我当然可以这样:

public class Loglevel {
public static final int ERROR = 1;
public static final int WARNING = 2;
public static final int NOTICE = 4;
}

但我认为可能有一个更聪明的解决方案。

最佳答案

您需要将 LogLevel 与另一个进行“比较”,看看它的日志级别是否足够高以进行记录。使用标志来表示位并使用按位数学来访问它们在这里并不是一个好主意,因为不可能独立设置标志的不同组合,即它不能同时是ERROR警告 同时出现。

我会获取您的枚举并向其添加一个整数level,并为每个Loglevel分配不同的数字。然后,在决定是否记录消息时,您可以将消息的 Loglevel 与当前的 Loglevel 进行比较,以确定其是否足够高,可以记录。

关于java - 与标志中的逻辑运算符一起使用的两个枚举的平方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23280888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com