Câu hỏi của tôi là trong suốt toàn bộ Android API rất nhiều thư viện các cuộc gọi yêu cầu một tham số results[]
được chuyển vào phương pháp ví dụ:Tại sao API Android yêu cầu thông số kết quả thay vì phương thức trả lại?
public boolean isInProximity(double startLat, double startLongitude, float meters) {
float[] results = new float[3];
Location.distanceBetween(startLat, startLongitude, endLatitude, endLongitude, results);
return results[0] <= meters;
}
Các cuộc gọi đến android là Location.distanceBetween()
và nó đòi hỏi sự results[]
tại sao họ không bao gồm chữ ký trả lại cho phương thức? Tôi giả định rằng đó là một số loại bộ nhớ hoặc tối ưu hóa tốc độ. Tôi không chắc chắn về lý do chính xác đằng sau nó.
Có lẽ để cho bạn sự linh hoạt để vượt qua trong cùng một đối tượng (mảng trong trường hợp này) với nhiều lời gọi của các phương pháp, do đó ngăn chặn sự cần thiết cho bộ nhớ phân bổ trên mỗi cuộc gọi. –
Vì vậy, tôi giả sử rằng tôi đang làm điều đó sai bằng cách có 'phao cá nhân [] kết quả = new float [3];' @RobI – Hones
Không nhất thiết. Nếu bạn không mong đợi phương thức đó được gọi thường xuyên (ví dụ, chỉ khi người dùng nhấp vào một nút), nó sẽ không tạo ra sự khác biệt. Nếu mã của bạn đang gọi nó hàng triệu lần, bạn có thể xem xét làm cho mảng đó một trường để giảm phân bổ. –