我想通过创建自定义注释来消除编写static final Logger logger = LoggerFactory.getLogger(AbstractConsumerConfig.class);
的重复性。类级的@Log
返回Logger
对象,该对象可用于记录目的。
我能够实现类变量上方的注释,例如-
@Log private Logger LOGGER;
,但我想在课堂上这样做,这样我什至不需要写那么多。
对于类级别的注释-Log.java
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Log {
}
LoggerUtil.java
import com.fiberlink.util.annotation.Log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static java.util.Objects.requireNonNull;
public class LoggerUtil {
public static Logger getLoggerObject(Object object) {
Class<?> objectClass = requireNonNull(object).getClass();
if(objectClass.isAnnotationPresent(Log.class)) {
final Logger LOGGER = LoggerFactory.getLogger(objectClass);
return LOGGER;
}
return null;
}
}
由于未在类中定义LOGGER变量(想通过注释获取它),我们将收到一个无法解析符号的错误。 我正在使用IntelliJ IDEA,但我想我需要创建一个插件来识别此批注,但我不知道从哪里开始。