Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 接口的静态和最终规则_Java_Interface_Static_Final - Fatal编程技术网

Java 接口的静态和最终规则

Java 接口的静态和最终规则,java,interface,static,final,Java,Interface,Static,Final,JAVA中实例字段的确切含义是什么? 根据我对JAVA的了解: 接口不能包含实例字段。只能在接口中显示的字段必须同时声明为static和final。 但是,当我尝试以下方法时: interface TempIn { TakeInput tv=null; String name=""; int temp=0; void printT(); } 它正在工作。怎样? 混乱…简单:默认情况下,所有这些字段都是静态和最终的 因此,java语

JAVA中实例字段的确切含义是什么?

根据我对JAVA的了解:

接口不能包含实例字段。只能在接口中显示的字段必须同时声明为static和final。

但是,当我尝试以下方法时:

interface TempIn
{
        TakeInput tv=null;
        String name="";
        int temp=0;
        void printT();
}
它正在工作。怎样?
混乱…

简单:默认情况下,所有这些字段都是静态和最终的

因此,java语言允许您写下隐式给定的内容

换句话说:想象一下“编译器”为你写下关键词

但我同意,这有点令人困惑。它也会变成一种“风格”的东西。在Java的早期,很多人会将这些冗余的关键字添加到他们的接口中。另一方面,“干净的代码”告诉我们要避免代码中的冗余。现在,像IntelliJ这样的IDE甚至会在使用关键字时给你警告。因此,我建议:

  • 不要触摸旧的、现有的代码
  • 与您的团队交谈,决定什么对您有意义,对于新代码,遵循该协议

编译器会在编译时为您添加静态最终关键字。是的,这一切都是关于:另一方面,“干净的代码”告诉我们避免代码中的冗余。知道了。“谢谢。”杰米莫迪说得对。这是我的主要观点。请注意我刚才的更新;-)知道了。默认情况下,接口中的所有这些字段都是静态的和最终的。默认情况下是否公开?这里是小博士;)这取决于你所说的冗余是什么意思。它在技术上是多余的,因为编译器不关心它是否存在。但单凭这一点还不能确定你写的东西是否超过了最低限度。编译器也不关心是否使用泛型。如果您仅依赖原始类型,它将编译并运行。当然,我们还是添加了它们,因为它们很有用,有助于减少bug。“在这些事情上,我们应该务实,而不是教条。”杰米莫迪(JaiminModi)这是一个观点。JetBrains(制造IntelliJ的)已经决定我们不应该这样做。这可能是一个有用的指标,用于提醒那些没有意识到默认行为不同的人(比如你自己),或者提醒那些忘记了的人。我会采取中立的立场,说可以把它包括在内,但我自己不会这样做。