2011-12-19 426 views
0

我已經創建了一個新類「ServiceRequest」,如下所示。我沒有在這裏添加getter和setter來節省空間。創建一個Java類的新對象返回一個空對象

package testListenerPackage; 

import java.util.Date; 

public class ServiceRequest { 

public static final ServiceRequest REQUEST_ARRIVAL = new ServiceRequest("Request_Arrival"); 
public static final ServiceRequest REQUEST_COMPLETION = new ServiceRequest("Request_Completion"); 
public static final ServiceRequest REQUEST_UNDER_PROCESS = new ServiceRequest("Request_Under_Process"); 


private String serviceRequest; 
private String requestName; 
private int requestID; 
private long arrivalTime; 
private long startServiceTime; 
private long endServiceTime; 
private long totalServiceTime; 

private String requestStatus; 

public enum RequestStatus{ 
    NEW, COMPLETED 
} 



public ServiceRequest() 
{ 

} 
public ServiceRequest(String serviceRequest) { 
    serviceRequest = serviceRequest; 
} 
} 

當我嘗試在像這樣的其他類中創建此對象的實例時,它將返回一個空對象。

public ServiceRequest generateServiceRequest() 
{ 
    ServiceRequest serviceRequest = new ServiceRequest("Ali baba"); 
    serviceRequest.setRequestID(1); 
    serviceRequest.setRequestName("Read"); 
    serviceRequest.setRequestStatus(ServiceRequest.REQUEST_ARRIVAL.toString()); 
    serviceRequest.setArrivalTime(System.currentTimeMillis()); 
    return serviceRequest; 
} 

有人可以告訴我該怎麼辦?

+0

你是什麼意思「返回空對象」?你是否得到一個NullPointerException?哪條線? – 2011-12-19 18:45:19

+5

另外你的構造函數中的'serviceRequest = serviceRequest'行沒有完成任何事情。您需要將其更改爲'this.serviceRequest = serviceRequest;' – 2011-12-19 18:45:44

+0

看起來應該起作用。是否有其他可能導致問題的代碼?你是否將其剝離到_just_發佈的代碼? – cdeszaq 2011-12-19 18:46:22

回答

1

我不喜歡這樣的代碼:

public ServiceRequest() 
{ 
    // all those references are null - crazy 
} 
public ServiceRequest(String serviceRequest) { 
    // use "this" to clarify what's initialized 
    this.serviceRequest = serviceRequest; 
} 
+0

this.serviceRequest起作用,它現在不返回空對象。謝謝大家幫助。 – Junaid 2011-12-19 20:04:32

0

時,他的意思是「零目標」,他的意思是對象有沒有在它(他serviceRequest字符串)。正如博格蘭瑟姆所說的「這個」將會完成工作