代码之家  ›  专栏  ›  技术社区  ›  Bittercoder

Java中的接口和@接口有什么区别?

  •  242
  • Bittercoder  · 技术社区  · 15 年前

    自从90年底在大学里使用JBu建器以来,我就没有接触过Java,所以我有点失去联系了——无论如何,我本周一直在研究一个小型Java项目,并使用因特利思想法作为IDE,用于从我的.NET开发中改变进度。

    我注意到它支持添加接口和@interfaces,什么是@interface,它与普通接口有何不同?

    public interface Test {
    }
    

    VS

    public @interface Test {
    }
    

    我已经做了一些搜索,但找不到大量关于@interface的有用信息。

    5 回复  |  直到 15 年前
        1
  •  262
  •   mrkishi    15 年前

    这个 @ 符号表示注释类型定义。

    也就是说 实际上是一个接口,而是一个新的注释类型——用作函数修饰符,例如 @重写 .

    看到这个 javadocs entry 关于这个问题。

        2
  •  89
  •   jsheeran mavis    8 年前

    接口:

    通常,一个接口公开一个契约,而不公开底层的实现细节。在面向对象编程中,接口定义了公开行为但不包含逻辑的抽象类型。实现由实现接口的类或类型定义。

    @接口:(注释类型)

    以下面的例子为例,它有很多评论:

    public class Generation3List extends Generation2List {
    
       // Author: John Doe
       // Date: 3/17/2002
       // Current revision: 6
       // Last modified: 4/12/2004
       // By: Jane Doe
       // Reviewers: Alice, Bill, Cindy
    
       // class code goes here
    
    }
    

    您可以声明一个注释类型,而不是这个类型。

     @interface ClassPreamble {
       String author();
       String date();
       int currentRevision() default 1;
       String lastModified() default "N/A";
       String lastModifiedBy() default "N/A";
       // Note use of array
       String[] reviewers();
    }
    

    然后可以对类进行如下注释:

    @ClassPreamble (
       author = "John Doe",
       date = "3/17/2002",
       currentRevision = 6,
       lastModified = "4/12/2004",
       lastModifiedBy = "Jane Doe",
       // Note array notation
       reviewers = {"Alice", "Bob", "Cindy"}
    )
    public class Generation3List extends Generation2List {
    
    // class code goes here
    
    }
    

    PS: 许多注释替换了代码中的注释。

    参考文献: http://docs.oracle.com/javase/tutorial/java/annotations/declaring.html

        3
  •  31
  •   Dr.jacky Mateusz Kaflowski    7 年前

    这个 interface 关键字指示您在Java中声明一个传统的接口类。
    这个 @interface 关键字用于声明新的批注类型。

    docs.oracle tutorial 关于语法描述的注释。
    JLS 如果你真的想了解 @接口 手段。

        4
  •  13
  •   Emmanuel Osimosu    7 年前

    interface: 为实现它的类定义协定

    @interface: 定义注释的协定

        5
  •  0
  •   Piyush Singh    5 年前

    界面 Java编程语言是一种抽象类型,用于指定类必须实现的行为。它们与协议类似。使用interface关键字声明接口

    @接口 用于创建自己的(自定义)Java注释。注释是在自己的文件中定义的,就像Java类或接口一样。这里是自定义Java注释示例:

    @interface MyAnnotation {
    
        String   value();
    
        String   name();
        int      age();
        String[] newNames();
    
    }
    

    这个例子定义了一个名为MyAnnotation的注释,它有四个元素。注意@interface关键字。这向Java编译器发出信号,表明这是一个Java注释定义。

    注意,每个元素的定义与接口中的方法定义类似。它有一个数据类型和一个名称。可以将所有基本数据类型用作元素数据类型。也可以将数组用作数据类型。不能将复杂对象用作数据类型。

    要使用上述注释,可以使用如下代码:

    @MyAnnotation(
        value="123",
        name="Jakob",
        age=37,
        newNames={"Jenkov", "Peterson"}
    )
    public class MyClass {
    
    
    }
    

    参考文献 http://tutorials.jenkov.com/java/annotations.html