gpt4 book ai didi

java - 强制一个类实现两个实现另一个接口(interface)的接口(interface)之一

转载 作者:行者123 更新时间:2023-12-01 13:35:49 25 4
gpt4 key购买 nike

我不太确定 Java 注解,但我认为它们可以解决我的问题。

我有一个java接口(interface)“Target”。这是一个空接口(interface),因此我可以将该实现放入“TargetHolder”中,它只是一个目标列表。

现在我只有两种类型的目标。输入“Alpha”并输入“Beta”。

“Alpha”类型与“Beta”类型没有共同的功能。

最简单的方法是从“Target”扩展“Beta”和“Alpha”。但是通过这个解决方案,程序员可以创建一个仅扩展“Target”的类,这是不可能的。

  1. 我可以通过注释解决这个问题吗?
  2. 如何?

最佳答案

理论上,您可以使用注释处理器来实现检查(在编译时)。问题是,如果 javac 在源文件中找到正确类型的注释,那么它只会在源文件上运行注释处理器。

"After scanning the source files and classes on the command line to determine what annotations are present, the compiler queries the processors to determine what annotations they process. When a match is found, the processor will be invoked."

(Javac手册)

但是您似乎希望在接口(interface)上添加注释来约束实现该接口(interface)的所有类。这意味着检查所有此类类......但我不知道如何在没有相关注释的类上触发注释处理器的运行。

这给你留下了几个选择:

  • 将检查实现为(例如)PMD 规则。
  • 编写一个工具来在运行时查找相关接口(interface),检索其注释,然后搜索实现带注释的接口(interface)的所有类。
<小时/>

我的建议是将其放入“太难”的篮子中。实现这一点可能需要比尽早发现相关编码错误所节省的时间更多的时间。 (我认为,当有人尝试使用类时,您试图避免的情况将会被选中。因此,您(或您的客户)应该在测试中找到您(他们的)不正确的类...)

关于java - 强制一个类实现两个实现另一个接口(interface)的接口(interface)之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21286005/

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