Tag: 常量

JSP中的Java常量

我有一个类定义各种常量的名称,例如 class Constants { public static final String ATTR_CURRENT_USER = “current.user”; } 我想在JSP中使用这些常量而不使用Scriptlet代码,例如: Apache unstandard taglib中似乎有一个标记提供此function。 但是,我找不到任何方法来下载这个taglib。 我开始怀疑它是否已被弃用且function是否已移至另一个(Apache)标记库? 有谁知道我可以在哪里获得这个库,或者如果它不可用,如果有其他方法我可以在不使用scriptlet代码的情况下访问JSP中的常量? 干杯,唐

在Java中为什么会出现这个错误:’属性值必须是常量’?

我有一些TestNG代码,我传递一个名为timeOut = TESTNG_TEST_TIMEOUT的Test annotation参数。 @Test(description = “Tests something.”, groups = { “regression” }, timeOut = TESTNG_TEST_TIMEOUT, enabled = true) 在我的TestBase类中,我有这个成员: public final static long TESTNG_TEST_TIMEOUT = TimeUnit.MINUTES.toMillis(5); 当我使用上面的代码行时,我在Eclipse中得到一个’属性值必须是常量’错误。 但是,如果我只是这样定义成员,它的工作原理如下: public final static long TESTNG_TEST_TIMEOUT = 300000; TimeUnit的使用不是常数吗?

枚举VS类VS接口

我一直在阅读本网站上有关常量用法的大量post。 问题:我应该何时使用枚举作为常量,使用类或接口。 我看到我想要解决的两个关键情况。 1.多个项目在应用程序中使用的全局常量。 例: 常见的日志字符串 容器引用,如WebSphere EAR中使用的数据库映射引用 2.对象特定常量 例: 员工对象的员工工资率 从我读过的所有内容来看,这就是我认为我掌握的内容以及我正在寻找的意见。 对于情况1:设计方法:使用最终类和静态导入。 在这里看到: 接口常量的用途是什么? 对于情况2:设计方法:应用Enums来表示这些常量作为对象。 要记住的其他要点: 如果常量字符串属于该类,并且您只需要在使用它的类中保留字符串值 不要在情况​​1中使用接口。如上面链接中提到的Constant Interface Anti-pattern。 。 提前感谢您的想法和意见。

Java Compiler是否包含String Constant Folding?

我发现Java支持原始类型的常量折叠 ,但是String呢? 例 如果我创建以下源代码 out.write(“” + “” + “” + “Easier to read if it is split into multiple lines” + “” + “” + “”); 什么进入编译代码? 合并版? out.write(“Easier to read if it is split into multiple lines”); 或者效率较低的运行时级联版本? out.write(new StringBuilder(“”).append(“”).append(“”).append(“Easier to read if it is split into multiple lines”).append(“”).append(“”).append(“”));

如何在java中实现数组?

数组实现为java中的对象吗? 如果是这样,我在哪里可以查看数组类的源代码。 我想知道数组中的长度变量是否被定义为常量,如果是这样,为什么它不是所有大写字母LENGTH使代码更容易理解。

Java 5+中的静态字符串常量VS枚举

我已经阅读了这个问题和答案: 在Java中实现常量的最佳方法是什么? 并提出了一个决定,即枚举是实现一组常量的更好方法。 另外,我在Sun网站上阅读了一个如何将行为添加到枚举的示例(请参阅前面提到的post中的链接)。 因此,将带有String键的构造函数添加到枚举中以保存一堆String值没有问题。 这里的唯一问题是我们需要添加“.nameOfProperty”来访问String值。 所以代码中的每个地方我们都需要通过它的名称(EnumName.MY_CONSTANT)来解决常量值,但是就像那样(Enum.MY_CONSTANT.propertyName)。 我在这儿吗? 你怎么看呢?

如果可以在编译时确定Java,则可以保证Java内联字符串常量

考虑这种情况: public Class1 { public static final String ONE = “ABC”; public static final String TWO = “DEF”; } public Class2 { public void someMethod() { System.out.println(Class1.ONE + Class1.TWO); } } 通常,您会期望编译器内联ONE和TWO常量。 但是,这种行为有保证吗? 你可以在类路径中没有Class1的运行时Class2部署,并期望它无论编译器如何工作,或者这是一个可选的编译器优化? 编辑:为什么要这样做? 好吧,我有一个常量,它将在应用程序的两端(客户端和服务器通过RMI)之间共享,在这种特殊情况下将常量放在一个只能位于该除法的一侧的类上是非常方便的(因为它在逻辑上是拥有该常量值的那个而不是将它放在任意常量类中,因为它需要由代码的两端共享。 在编译时它的所有一组源文件,但在构建时它被包分开。

获取数组类型的Class对象的最佳方法是什么?

获取类的类文字很容易: String.class 但是如何获取数组类型的类对象? 这有效,但它很难看,可能不是编译时常量: new byte[0].getClass() 我查看了JLS,但我发现的唯一一件事就是根据JLS定义我所谓的“类文字”不是“文字”。

字符串池与常量池

这个问题可能很愚蠢。 但我完全糊涂了。 需要帮助理解字符串池和常量池。 我很清楚字符串实习和字符串池。 String s1 = “Hello”; String s2 = “Hello”; 现在两者都由于实习而引用同一个对象。(即)由于字符串是不可变的,因此只创建一个对象并且两者都引用同一个对象。 而且常量池是保存在类中声明的所有常量(整数,字符串等)的东西。 它针对每个class级。 System.out.println(“Hello”); //I believe this Hello is different from above. 我的问题是, 字符串池是指常量池中的常量字符串对象池吗? 如果是,是字符串池在整个应用程序中是通用的还是特定于类? 谢谢。

编译时常量和变量

Java语言文档说: 如果将基本类型或字符串定义为常量并且在编译时已知该值,则编译器会将代码中的常量名称替换为其值。 这称为编译时常量。 我的理解是,如果我们有一段代码: private final int x = 10; 然后,编译器将用文字10替换代码中每次出现的x 。 但假设常量在运行时初始化: private final int x = getX(); // here getX() returns an integer value at run-time. 与编译时常量相比,是否会出现性能下降(无论可能忽略不计)? 另一个问题是以下代码行: private int y = 10; // here y is not final 编译器以与编译时常量相同的方式处理? 最后,我从答案中理解的是: final static表示编译时常量 just final意味着它是一个常量但在运行时初始化 只是static意味着在运行时初始化 没有final是一个变量,不会被视为常量。 我的理解是否正确?