簡體   English   中英

用默認構造函數和configure方法在Java中編寫一個類,該方法定義如何初始化該類的對象?

[英]Writing a class in Java with a default constructor and configure method defining how an object of that class is initialized?

我是Java編程的新手,以前只能使用Python編程。 我必須編寫一個不包含構造函數的類,而要使用一種“配置”該類對象的方法。 因此,據我了解,該類對象被創建為沒有內容的對象,然后其內容由configure方法設置。 數組傳遞給configure方法,但是當我嘗試將類對象設置為等於數組時,它說類型不匹配-我需要將類對象更改為數組,或者將數組更改為類對象,從當時我所了解的還不確定。 什么是類對象? 我怎樣才能使它成為沒有構造函數的數組? 我很困惑,網上似乎沒有關於這種情況的參考資料。

//更新//

這是根據您的請求配置的方法。

我知道您不想要英語,但是僅用幾行代碼就很難解釋-它是一個較大的程序的一部分,該程序在地圖上找到最有效的路徑。 有一個通過MapState運行的GUI界面,該MapState執行BasicMapState的方法,而MapSolver執行BasicBasicMapSolver的方法。 namedState是代表所有地圖圖塊的數組,在求解器當前所在的圖塊中帶有1。

理想情況下,我想將namedState數組和父級移動(求解器選擇的方向到達給定State)存儲為MapState類對象的屬性,但是我迷路了。 請幫忙。

public class BasicMapState implements MapState {
@Override
public void configureState(int[] givenState) {
    MapState current = givenState
}

首先,如果不編寫構造函數,則編譯器會自動生成一個空的構造函數。 如果您不希望調用構造函數,請像這樣使它私有

private BasicMapState() { }

如果您不想使用此類創建對象,則可以使用靜態變量,否則必須從任何公共方法中調用構造函數。

來解決您的問題:據我了解,您嘗試使namedState數組等於接口? 這是沒有道理的。 如果要設置這樣的內容,則必須首先聲明一個可以設置的變量。 在大多數情況下,接口僅用於聲明方法名稱。 該接口是一個接口,而不是數組。 為了解釋您的錯誤,該and數組與Object不兼容。 如果我沒記錯的話,Object是所有類和接口都從其繼承的基本根類。

我希望能有所幫助,如果不能讓我知道:)

約翰

畝〜也許

public class BasicMapState implements MapState {
private int[] givenState;
@Override
public void configureState(int[] givenState) {
    this.givenState = givenState;
}

然后也許自定義比較方法,例如

public boolean myCompare(BasicMapState bms){
    return Arrays.equals(givenState, bms.getGivenState());
}

或者只是重寫equals方法

暫無
暫無

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

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