Java 中 modifer 'public' is reduntant for interface methods

http://androidren.com/index.php?qa=322&qa_1=java-%E4%B8%AD-modifer-public-is-reduntant-for-interface-methods

经常会看到接口上写了public修饰方法,然后IDE,比如:Eclipse或者IDEA经常会提示public是多余的。后来就查了一下。java默认接口的方法是public和abstract的,所以真没必要。同时,如果你使用private或者protected都会报错。

所以,安心删除public吧。

http://stackoverflow.com/questions/17011374/are-public-and-public-final-redundant-for-interface-methods

You cannot have a final method
declared in an interface. Fields are always final but
methods are always abstract (and
never final).
You cannot define an interface method that is to be implemented only by classes in the same package.* From section
9.3 of the Java Language Specification
:

Every field declaration in the body of an interface is implicitly public, static, and final. It is permitted to redundantly specify any or all of these modifiers for such fields.

and from section 9.4:

Every method declaration in the body of an interface is implicitly public (§6.6).

Every method declaration in the body of an interface is implicitly abstract, so its body is always represented by a semicolon, not a block.

It is permitted, but discouraged as a matter of style, to redundantly specify the public and/or abstract modifier for a method declared in an interface.

* As Paul Bellora points out in a comment, you can make the interface itself package-private (or protected, or even private) if you want to restrict its visibility.

In addition, an interface can contain constant declarations. All constant values defined in an interface are implicitly publicstatic,
and final. Once again, you can
omit these modifiers.

另外,所有常量值默认都是public static final,不用添加。

Java 中 modifer 'public' is reduntant for interface methods

时间: 2024-11-07 08:31:40

Java 中 modifer 'public' is reduntant for interface methods的相关文章

Java 中 modifer 'public' is reduntant for interface methods

http://androidren.com/index.php?qa=322&qa_1=java-%E4%B8%AD-modifer-public-is-reduntant-for-interface-methods 常常会看到接口上写了public修饰方法,然后IDE,比方:Eclipse或者IDEA常常会提示public是多余的.后来就查了一下.java默认接口的方法是public和abstract的,所以真不是必需.同一时候,假设你使用private或者protected都会报错. 所以,

Java中定义常量方法及建议(Class/Interface)

Class定义常量方法(推荐方法) //final修饰符 public final class Constants { //私有构造方法 private Constants() {} public static final int ConstantA = 100; public static final int ConstantB = 100; ...... } 采用“类.常量名”方法进行调用.需要私有化构造方法,避免创建该类的实例.同时不需让其他类继承该类. 如果多处需要访问工具类中定义的常量

Java中private、public、static、protetced、abstract、final

abstract (抽象的) 1.abstract可以修饰类和成员方法,被abstract修饰的类称为抽象类,被abstract修饰成员方法叫抽象方法.抽象类不一定有抽象方法,但拥有抽象方法的一定是抽象类; 2.被abstract修饰的类不能直接实例化,需要通过子类实现,所有抽象类一定有子类. 3.继承抽象类的子类必须重写抽象类中的被abstract修饰的抽象方法,如果不继承就必须把自己变成抽象的子类. final (最终的) final可以修饰类,成员变量,成员方法,局部变量/形参. 2.fi

java中的++运算符

java中的++运算符 public class PlusPlusTest { /** * @param args */ public static void main(String[] args) { int a = 0; for (int i = 0; i < 10; i++) { a = a++; } System.out.println(a); } } 输出结果是0 解释:在这里jvm里面有两个存储区,一个是暂存区(是一个堆栈,以下称为堆栈),另一个是变量区. 语句istore_1是将堆

Java中的Map 笔记

Map是Java中的接口 public interface Map<K,V> Map.Entry是Map的一个内部接口 interface Entry<K,V> {} Map提供了一些常用的方法,如keySet() , values,entrySet() 等方法 keySet() 方法返回的是Map中Key值的集合  而entrySet()返回的也是一个Set集合但是集合类型为Map.Entry<K,V> Set<Map.Entry<K, V>>

慕课网-安卓工程师初养成-3-9 Java中运算符的优先级

来源 http://www.imooc.com/code/1315 所谓优先级,就是在表达式中的运算顺序.Java 中常用的运算符的优先级如下表所示: 级别为 1 的优先级最高,级别 11 的优先级最低.譬如,x = 7 + 3 * 2  得到的结果是 13 “先乘后加”嘛! PS:大家没必要去死记运算符的优先级顺序,实际开发中,一般会使用小括号辅助进行优先级管理.例如: 分析:小括号优先级最高,因此 1. 执行 a + 18 ,结果为 30 2. 执行( a + 18 ) % 4 取模,结果为

在JAVA中利用public static final的组合方式对常量进行标识

在JAVA中利用public static final的组合方式对常量进行标识(固定格式). 对于在构造方法中利用final进行赋值的时候,此时在构造之前系统设置的默认值相对于构造方法失效. 常量(这里的常量指的是实例常量:即成员变量)赋值: ①在初始化的时候通过显式声明赋值.Final int x=3: ②在构造的时候赋值. 局部变量可以随时赋值. 1 package TomText; 2 //利用if语句,判断某一年是否是闰年. 3 public class TomText_28 { 4 p

Java中public,private,protected,和默认的区别

作用域    当前类  同包 子类 其他 public        √        √       √      √ protected  √        √       √      × 默认           √       √       ×      × private       √        ×      ×      × 类的成员不写访问修饰时默认为default.默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private

hadoop 关于java中的public static 变量是不能被改变的?

我在写hadoop的时候,在mapper里定义了一个public static int rownums = 0.但我在main里对这个变量进行了赋值. 结果在循环的过程中,根本没有任何输出,因为我是用这个变量来控制循环的,所以我猜想可能是不能改变这个值,于是我直接在初始定义的时候直接赋上正确的值,所以这样最后程序就正确运行了. 但是我又新建了一个工程写了一个小程序,试了一下,明明是能够改变,正确输出的. 不能理解了. hadoop 关于java中的public static 变量是不能被改变的?