【问题标题】:Intention: annotated class automatically extends superclass意图:带注释的类自动扩展超类
【发布时间】:2017-10-27 12:11:49
【问题描述】:

我有一个注解

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Component
@Scope("prototype")
public @interface Car {
}

还有一个抽象超类

public abstract class AbstractCar {
    ...
}

在这个类上效果很好:

@Car
public class MyBlueCar extends AbstractCar {
    ...
}

但是,我没有找到在实现中省略“extends AbstractCar”的方法。由于 Car 的所有实现都必须扩展 AbstractCar,因此我正在寻找一种解决方案以在自定义注释中包含“扩展 AbstractCar”。这样一个带有 @Car 注释的类也是一个 AbstractCar,没有在代码中用“扩展”部分明确提及它。

直到现在,我还没有成功;扩展@interface 似乎不合逻辑并且不起作用。

我的问题:这是否可能,如果可以,我该怎么做?

感谢您的任何建议和意见。

帕特里克

【问题讨论】:

  • 你不能省略extends
  • 我担心这就是答案。你能解释一下为什么注释不能处理“扩展”吗?
  • 这只是语言设计。我要问你为什么要通过注解来处理?你是从哪里得到这个想法的?
  • 我只是想到了冗余。为什么我需要写代码部分(@Carextends AbstractCar),虽然有可能一次性完成。
  • 更正:为什么我需要编写两个代码部分...

标签: java annotations


【解决方案1】:

经过一些进一步的研究和讨论,我想添加结果以使事情更加明显。

正如问题中已经评论的那样,从技术上讲这是不可能的。 原因:注解是在运行时使用的,而“extends”部分是在编译时使用的。这两件事不能混在一起。

意图是一个不幸的选择。当我有所有汽车都应该共享的行为时,我无法提供注释。所以我需要代码中的“扩展”部分。

感谢所有帮助我理解的人。 帕特里克

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    相关资源
    最近更新 更多