[英]How to call a method inside the public static void main(String[] args) class in Java?
[英]How to initialize constant such as “public static final Integer” in java from args[] in main method (or any)
我基本上是Java的初学者,并且我试图找出这个问题:
我的项目通过许多类使用(整数)常量,我需要从programm的文件/参数中设置此常量,但我不知道如何。 我可以删除“ final”语句,但这违反所有约定。
如何解决呢? 避免这种情况的最佳方法是什么? 请帮我 :)
简短的例子:
public class App {
public static final int k;
public static void main( String[] args ) {
k = Integer.parseInt(args[0]); // does not work ... sure but how?
}
}
编辑:公共静态无效主...(它缺少静态)
您只能在static { }
块中使用这种功能。
我建议将常量本身设为私有,并且只能通过public static
getter方法访问。 这应该是一个合适的体系结构。
您需要使用static{}
块:
public class App {
public static final int k;
static {
String kvalue = "";
try
{
// Insert some code to open a file and read a value from it.
kvalue = "<value from file>";
}
catch( Exception e )
{
// handle any exceptions opening the file
}
finally
{
k = Integer.parseInt( kvalue );
}
}
public static void main( final String[] args ) {
// do stuff
}
}
或者,您可以让每个需要此值访问共享数据池ApplicationContext
,其中值X
将作为常量驻留在其中:
public final class ApplicationContext {
public static abstract class Worker {
private final ApplicationContext mApplicationContext;
public Worker(final ApplicationContext pApplicationContext) {
this.mApplicationContext = pApplicationContext;
}
public final ApplicationContext getApplicationContext() {
return this.mApplicationContext;
}
}
private final int mX;
ApplicationContext(final String[] pArgs) {
this.mX = pArgs[0];
}
public final int getX() {
return this.mX();
}
}
通过使所有相关的类扩展ApplicationContext.Worker
,我们可以确保访问常量值而不必依赖static
实现,因为所有类在构造时都会收到对ApplicationContext
的引用。
它不起作用,因为static final
变量只能在静态块中初始化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.