我有以下代码:
public class UserRepository
{
private MyDataSource myDataSource = new MyDataSource();
public static User CreateUser( int id, String firstName, String lastName )
{
myDataSource.propertyOfThis...
// myDataSource is not accessible and yet i have declared it as a property of UserRespository?
}
...
我在这里缺少什么?
答案 0 :(得分:4)
myDataSource
不是static
private MyDataSource myDataSource = new MyDataSource();
但CreateUser
是static
public static User CreateUser( int id, String firstName, String lastName )
因此请myDataSource
static
或删除CreateUser
static
修饰符。
哦,或new UserRepository()
。
答案 1 :(得分:2)
您需要将myDataSource设为静态。可以在不创建实例的情况下调用静态方法,因为myDataSource是实例变量,因此无法访问它。
答案 2 :(得分:0)
您的方法 CreateUser 是静态的,而 MyDataSource 是一个实例字段
答案 3 :(得分:0)
问题是您的字段不是static
,而是在static
方法中使用它。
问题是static
方法不是在类(对象)的实例上执行,而是在类本身上执行。字段仅存在于对象中。因此,该方法不需要是静态的,或者字段应该是静态的。取决于您的用例。
答案 4 :(得分:0)
您的方法是static
。如前所述,您无法从静态方法中访问非静态方法或变量。
这样做的原因是在没有实例化类的情况下可以访问静态成员和方法。但是,那些非静态(又称“实例”)变量属于该类的特定INSTANCE。因此,您必须具有要引用的实例化对象才能获取变量。
如果您使用的是静态代码块,则出于同样的原因,您无法使用关键字this
。 this
指的是该类的特定实例化对象。
答案 5 :(得分:0)
* 问题是你的字段不是静态的,但你在静态方法中使用它。 *问题是静态方法不在类的实例上执行(对象),但在课堂上。