簡體   English   中英

從類方法中訪問類屬性-Java

[英]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();

但是CreateUserstatic

public static User CreateUser( int id, String firstName, String lastName )

因此,使myDataSource static或刪除CreateUserstatic修飾符。

哦,還是new UserRepository()

您需要將myDataSource設置為靜態。 可以在不創建實例的情況下調用靜態方法,因為myDataSource是實例變量,因此無法訪問。

您的方法CreateUser是靜態的,而MyDataSource是實例字段

問題在於您的字段不是static ,但是您正在以static方法使用它。

問題在於static方法不是在類(對象)的實例上執行,而是在類本身上執行。 字段僅存在於對象中。 因此,方法不必是靜態的,或者字段應該是靜態的。 取決於您的用例。

您的方法是static 如前所述,您不能從靜態方法中訪問非靜態方法或變量。

這樣做的原因是靜態成員和方法是可訪問的,而無需實例化類。 但是,那些非靜態(也稱為“實例”)變量屬於該類的特定INSTANCE。 因此,必須具有實例化的對象才能引用以獲取變量。

如果您處於靜態代碼塊中,則出於相同原因,不能使用關鍵字this this是指該類的特定實例化對象。

* 問題在於您的字段不是靜態的,但是您正在以靜態方法使用它。 *問題在於靜態方法不是在類(對象)的實例上執行,而是在類本身上執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM