大家好,我在这里看不到我做错了什么。我目前正在跟踪this tutorial如何为项目实施Singleton模式,并设置了一些测试文件以查看它是否可以很好地满足我的工作,据我所知,我正在遵循模式完美,但我似乎无法访问任何方法,这是我第三次以各种方式进行设置,这是最简单的设置,但仍然无法正常工作,我处于在这里发生了什么事的黑暗。如果可能的话,我只需要指出我在做错什么。这是代码:
DCTest.java(单例类)
package com.saphiric.simproject.datacontrols;
/**
* Created by Saphiric on 12/30/14.
*/
public class DCTest {
// Singleton Test
private static DCTest dct = new DCTest();
private DCTest(){
// Prevents outside instantiation
}
public static DCTest getInstance(){
return dct;
}
// test variables for making sure it can have dynamic fields
private int INT;
protected void setInt(int newInt){
INT = newInt;
}
protected int getINT(){
return INT;
}
}
DataCore.java(我要访问Singleton类的文件)
package com.saphiric.simproject.datacontrols;
/**
* Created by Saphiric on 12/29/14.
*/
public class DataCore {
// Singletons Tests
DCTest test = DCTest.getInstance();
test.setInt(0);
public DataController data = new DataController();
public DecisionLocks locks = new DecisionLocks();
}
最佳答案
您的问题是Java中的方法调用必须在方法中。因此,您遇到的问题实际上与Singleton模式几乎没有关系,这是因为您试图在类的主体中进行调用,而不是在方法中进行。如果尝试编译以下内容,则会出现相同的错误:
public class HelloWorld{
System.out.println("Hello, World!"); //Err
}
解决问题的方法取决于您要完成的工作。
如果您试图在DataCore类的类加载时调用
setInt(0)
(并且test
应该是静态字段),请使用静态初始化程序(只是单词static
而不是方法标头)对于该声明。public class DataCore {
// Singletons Tests - static
static DCTest test;
//Called when the DataCore class is loaded.
static{
test = DCTest.getInstance();
test.setInt(0);
}
}
另外,如果字段
test
实际上应该是非静态的,则只需将setInt调用放在构造函数中:public class DataCore {
// Singletons Tests - nonstatic
DCTest test;
public DataCore(){
test = DCTest.getInstance();
test.setInt(0);
}
}