相关疑难解决方法(0)

静态和非静态初始化代码块之间有什么区别

我的问题是静态关键字的一个特定用法.可以使用static关键字来覆盖不属于任何函数的类中的代码块.例如,以下代码编译:

public class Test {
    private static final int a;    
    static {
        a = 5;
        doSomething(a);
    }
    private static int doSomething(int x) {
        return (x+5);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你删除static它抱怨的关键字,因为变量afinal.但是,可以删除两个finalstatic关键字并使其编译.

这两种方式让我感到困惑.我怎么能有一个不属于任何方法的代码部分?如何调用它?一般来说,这种用法的目的是什么?或者更好,我在哪里可以找到关于此的文档?

java static static-initializer

345
推荐指数
8
解决办法
23万
查看次数

我怎样才能创建一个静态的最终java.net.URL?

我的问题很简单.我正在尝试创建一组java.net.URLs public static final,以便任何类都可以从任何上下文访问它们,因为这些URL在运行时不会更改.但是,当我尝试创建它们时,我收到编译器错误,告诉我必须捕获或声明抛出a java.net.MalformedURLException,但这在方法之外是不可能的.有没有办法绕过这样一个抛出非java.langThrowable的构造函数?

下面的一些虚拟代码可视化我的问题:

public class Main
{
    public static final java.net.URL STATIC_URL = new java.net.URL("http://example.com/");
    public static void main(String[] args)
    {
        GUI gui = new GUI();
        gui.setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)
public class GUI extends java.awt.Window
{
    public GUI()
    {
        add(new java.awt.Label(Main.STATIC_URL.toString()));
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你试图编译它,它会告诉你,你不能因为第3行.因此我的问题.

java static constructor compiler-errors

8
推荐指数
3
解决办法
9345
查看次数

Java:什么是static {}?

有人可以解释一下以下是什么吗?

public class Stuff
{
    static
    {
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
        }
        catch ( ClassNotFoundException exception )
        {
            log.error( "ClassNotFoundException " + exception.getMessage( ) );
        }
...
}
Run Code Online (Sandbox Code Playgroud)

这静态{...}做了什么?

我知道来自C++的静态变量,但这是一个静态块还是什么?

什么时候这个东西会被执行?

java static-initializer

6
推荐指数
2
解决办法
510
查看次数