gpt4 book ai didi

Java函数注解帮助,使用@Deprecated?

转载 作者:IT老高 更新时间:2023-10-28 20:24:51 25 4
gpt4 key购买 nike

场景:
Java 1.6

class Animal { 
private String name;
...
public String getName() { return name; }
...
}

class CatDog extends Animal {
private String dogName;
private String catName;
...
public String getDogName() { return dogName; }
public String getCatName() { return catName; }
public String[] getNames() { return new String[]{ catName, dogName }; }
...
public String getName() { return "ERROR! DO NOT USE ME"; }
}

问题:
getName 没有意义,不应在此示例中使用。我正在阅读 @Deprecated 注释。有没有更合适的注解方式?

问题:
A) 使用该函数时(运行前)是否可以强制出错?
B)有没有办法为我将使用的注释方法显示自定义的警告/错误消息?理想情况下,当用户将鼠标悬停在已弃用/错误功能上时。

最佳答案

通常,您将@Deprecated 用于已被较新版本的软件过时的方法,但您保留这些方法是为了与依赖于旧版本的代码兼容。我不确定它是否是在这种情况下使用的最佳标签,因为 Animal 的其他子类仍在积极使用 getName,但它肯定会提醒用户 CatDog 类,他们不应该调用该方法。

如果您想在使用该函数时在编译时引发错误,您可以更改编译器选项以将使用 @Deprecated 方法视为错误而不是警告。当然,您不能保证使用您的库的每个人都会设置此选项,而且我不知道仅根据语言规范强制编译错误。从 CatDog 中删除该方法仍将允许客户端调用它,因为客户端将只是从父类(super class) Animal 调用默认实现(大概您仍然希望包含方法)。

但是,当用户将鼠标悬停在已弃用的方法上时,当然可以显示自定义消息。 Javadoc @deprecated 标记允许您指定一个方法为什么被弃用的解释,当用户将鼠标悬停在像 Eclipse 这样的 IDE 中的方法上时,它将弹出而不是通常的方法描述。它看起来像这样:

/**
*
* @deprecated Do not use this method!
*/
@Deprecated
public String getName() {
throw new UnsupportedOperationException();
}

(请注意,您可以使方法的实现抛出异常,以保证如果用户在编译时没有注意到@Deprecated 标签,他们肯定会在运行时注意到它)。

关于Java函数注解帮助,使用@Deprecated?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11463271/

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