[英]Getting access to class properties from within class methods - Java
我有以下代碼:
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?
}
...
我在這里想念什么?
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()
。
您需要將myDataSource設置為靜態。 可以在不創建實例的情況下調用靜態方法,因為myDataSource是實例變量,因此無法訪問。
您的方法CreateUser是靜態的,而MyDataSource是實例字段
問題在於您的字段不是static
,但是您正在以static
方法使用它。
問題在於static
方法不是在類(對象)的實例上執行,而是在類本身上執行。 字段僅存在於對象中。 因此,方法不必是靜態的,或者字段應該是靜態的。 取決於您的用例。
您的方法是static
。 如前所述,您不能從靜態方法中訪問非靜態方法或變量。
這樣做的原因是靜態成員和方法是可訪問的,而無需實例化類。 但是,那些非靜態(也稱為“實例”)變量屬於該類的特定INSTANCE。 因此,必須具有實例化的對象才能引用以獲取變量。
如果您處於靜態代碼塊中,則出於相同原因,不能使用關鍵字this
。 this
是指該類的特定實例化對象。
* 問題在於您的字段不是靜態的,但是您正在以靜態方法使用它。 *問題在於靜態方法不是在類(對象)的實例上執行,而是在類本身上執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.