當談到Java時,我仍然是一個相對的新手,主要來自C#背景。我應該使用匿名內部類來模擬Java中的'out'參數嗎?
我討論缺乏Java方法與同事,以及如何解決這個「出」參數。他建議創建一個結構/類來保存各種參數並將其傳回。
有時,這種感覺「錯誤」我 - 特別是如果我有,我想用從一個更大的類返回的參數的子集的特殊方法。
所以我想知道如何使用匿名內聯類來實現這一點。下面的代碼示例。
這是一個明智的做法嗎?只是想知道這種感知的智慧是什麼。
public class MyClass {
Patient myPatient = null;
// An interface to enable us to return these variables in a single call
public interface VitalStatsResponse { public void returnStats(int bloodPressure, int heartRate); }
public class Patient {
int bloodPressure = 100;
int heartRate = 280;
// Lots of other variables here
public void calculateVitalStats(VitalStatsResponse response)
{
response.returnStats((bloodPressure * 2), (heartRate/10) ;
}
}
public void doWork()
{
// We want the patient's blood pressure and heart rate returned by a single method call, so use an anonymous inline class
myPatient.calculateVitalStats(new VitalStatsResponse() {
@Override
public void returnStats(int bloodPressure, int heartRate) {
// Handle returned variables here
}
});
}
}
就個人而言,我會在C#中使用「類來保存我關心的屬性」,而不是使用'out'參數 - 如果某組屬性具有有用的含義,爲什麼沒有類型呢?通常我發現做到這一點,「更大的階級」也可以使用它,並且變得更簡單。例如,Person類不應該有「DateOfBirth,Street1,Street2,Street3,ZipCode,Country」......他們應該(可能)有「DateOfBirth,Address」。 out參數方法對於* private *方法有一定意義,但我不是公衆的粉絲。 – 2015-03-19 12:05:43