Tag: final

java:为什么Local变量应该声明为final

可能重复: 是否有任何性能原因在Java中声明方法参数final? 为什么在Java中将局部变量和方法参数标记为“final”? 我正在使用PMD来查看代码违规。 在webService方法中,我有以下代码 public ServiceRequest getData() { Status status = new Status(); // code } PMD建议我的是,这个局部变量状态可以被声明为final。 我的问题是,将其作为最终结果会导致任何性能改进,或者如果不能获得代码可以带来什么好处?

方法签名中的最终关键字

可能重复: 接口方法中的最终参数 – 重点是什么? 在尝试尝试一些事情时,我遇到了一个问题,就在本页中描述了这个问题。 interface B { public int something(final int a); } abstract class C { public int other(final int b); } class A extends C implements B { public int something(int a) { return a++; } public int other(int b) { return b++ } } 为什么这样的function可能? 我不知道为什么可以通过覆盖方法将最终参数变成非最终参数。 为什么在方法签名中忽略final关键字? 如何强制子类在其方法中使用最终变量?

无法在内部类中声明Public static final String s = new String(“123”)

我试图声明一个类,如下所示 class Outer{ private final class Inner{ public static final String s1 = new String(“123”); public static final byte[] bytes = new byte[]{0x00, 0x01}; public static final String s2 = “123”; public static final byte byte1 = 0x02; } } 在上面的代码中,s1和bytes不会编译,但是s2和byte1编译。 如果我将整个常量声明放在外部类中它可以正常工作。 我错过了什么 有帮助吗?

Java中的最终字符

以下代码段发出编译时错误。 char c = ‘c’; char d = c + 5; 第二行的错误说, possible loss of precision required: char found: int 该错误消息基于NetBeans IDE。 当这个字符c被声明为final ,如下所示。 final char c = ‘c’; char d = c + 5; 编译器时间错误消失了。 它与最终字符串的情况无关 final修饰符在这里有什么不同?

java类的最终字段是否应该是静态的?

我在网上找不到任何关于此的参考资料。 但只是想知道一个类中的最终字段是否应该始终是static还是仅仅是一个约定。 基于我对它们的用途的理解,我觉得比语言强加的东西更符合逻辑。

方法本地类中的Java final静态声明

在方法中声明本地内部类时,为什么包含最终的静态字符串或整数是合法的,但包含其他对象是不合法的? 例如: class Outer { void aMethod() { class Inner { final static String name = “compiles”; final static int ctr = 10; // compiles final static Integer intThree = Integer.valueOf(3); // does not compile! final static obj objConst = new Object(); // does not compile! } Inner inner = new Inner(); } } 当我编译它时,我得到以下内容: […]

导入的java类中的public static final变量

我碰巧在工作场所遇到过Java代码。 这是场景:有两个类 – ClassA和ClassB 。 ClassA中除了4个公共静态最终字符串值之外什么都没有。 它的目的是使用像ClassA.variable这样的值(不要问我为什么,这不是我的代码)。 ClassB导入ClassA 。 我在ClassA编辑了字符串值并对其进行了编译。 当我运行ClassB我可以看到它使用的是旧值 – 而不是新值。 我不得不重新编译ClassB以使其使用ClassA新值! (我不得不重新编译导入ClassA其他类!) 这只是因为JDK 1.6或我之前应该知道重新编译ClassB ! 开导我。 🙂

为什么Java enum不能是最终的?

public interface Proposal { public static final enum STATUS { NEW , START , CONTINUE , SENTTOCLIENT }; } Java不允许枚举在接口内是final的,但默认情况下,接口内的每个数据成员都是public static final 。 任何人都可以澄清一下吗?

将最终变量传递给匿名类

在通过构造函数传递给匿名类的最终变量中 ,Jon Skeet提到变量通过自动生成的构造函数传递给匿名类实例。 在这种情况下,为什么我无法使用reflection看到构造函数: public static void main(String… args) throws InterruptedException { final int x = 100; new Thread() { public void run() { System.out.println(x); for (Constructor cons : this.getClass() .getDeclaredConstructors()) { StringBuilder str = new StringBuilder(); str.append(“constructor : “).append(cons.getName()) .append(“(“); for (Class param : cons.getParameterTypes()) { str.append(param.getSimpleName()).append(“, “); } if (str.charAt(str.length() – 1) == […]

Java中const(C ++)的等价物

我想知道在Java中是否有相当于c ++的const。 我理解final关键字,但遗憾的是我无法使用它来声明函数返回值final。 相反,它始终确保function不能被覆盖,正确吗? 基本上,我想确保给定的返回类不能被修改并且是只读的。 这可能在Java中吗?