java - 是否可以通过调用类方法来调用参数化构造函数?

标签 java constructor

据我所知,创建对象时会调用构造函数。即使没有创建对象,我也对如何调用构造函数感到困惑。例如考虑我的代码:

public class MyAdapter {

private static final String APPID = "Foobar";
private static final String ENCPWD = "r4nd0mF0064r==";
private MyDelegate delegate = null;

public MyAdapter(MyDelegate delegate) {
    init(delegate);
}

private void init(MyDelegate delegate) {
    try {

        URL url = new URL("Some url");
        QName qname = new QName("http://blahblahblahfoo.com/", "My Service");
        Service service = Service.create(url, qname);
        delegate = service.getPort(MyDelegate.class);

    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public MyDelegate getDelegate() {
    return delegate;
}

public boolean authenticatePrimeMember(String userID, String userPwd) {

    MyDelegate delegate = getDelegate();

    // Other unimportant code using APPID and ENCPWD

    return false;
}
}

现在,当我从另一个包调用类方法时,例如

boolean auth = MyAdapter.authenticatePrimeMember(someID, LongBeard) 

它运行完美!这不应该发生,因为我没有创建任何对象,所以 delegate无法初始化。有人可以解释一下发生了什么事吗?

更新:一个可能的错误通过了编译器并进行了部署!天啊。

最佳答案

由于 authenticatePrimeMember() 不是静态方法(并且 delegate 不是静态变量),因此您必须创建一个 MyAdapter在调用之前调用 MyAdapter 对象,否则程序甚至无法编译。再次检查您的代码。

关于java - 是否可以通过调用类方法来调用参数化构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20847910/

相关文章:

java - 如何使用 java 将 1 到多个参数发送到 Rest Api

java - 在纯 Java 中检索呈现的 HTML DOM

c++ - C++错误中的结构初始化

java - 构造函数 this() 不必要吗?

python - 如何从父调用子构造函数?

Java 进程消耗超过 2 GB 内存

java - Restful JAX-RS 服务器错误

无需 servlet 的 Java 客户端身份验证

c++ - 默认构造函数中未识别的标识符

c++ - 如何为优先级队列预分配内存?