Làm thế nào tôi có thể vượt qua tham số enum bằng cách tham chiếu trong java? Bất kì giải pháp nào?chuyển enums bằng cách ref trong java
Trả lời
Trong Java, bạn không thể chuyển bất kỳ tham số nào theo tham chiếu.
Cách giải quyết duy nhất tôi có thể nghĩ đến là tạo lớp bao bọc và bao bọc enum.
public class EnumReference {
public YourEnumType ref;
}
Và sau đó bạn sẽ sử dụng nó như vậy:
public void someMethod(EnumReference reference) {
reference.ref = YourEnumType.Something;
}
Bây giờ, tham chiếu sẽ chứa một giá trị khác nhau cho enum của bạn; về cơ bản bắt chước truyền qua tham chiếu.
Tôi thực sự đã tạo một loại 'IndirectReference
@Jon, gọi tốt. Tôi thường không có vẻ có vấn đề với pass-by-value. Không bao giờ có vẻ như cản đường tôi. – jjnguy
@ Jonathan: Bạn cũng có thể sử dụng 'AtomicReference'. – ColinD
Java được truyền theo giá trị - luôn luôn.
Bạn chuyển tham chiếu chứ không phải đối tượng. Các tham chiếu được truyền theo giá trị.
Bạn có thể thay đổi trạng thái của đối tượng có thể thay đổi mà tham chiếu trỏ đến trong hàm mà hàm được chuyển vào, nhưng bạn không thể thay đổi chính tham chiếu đó.
Không thể tưởng tượng tại sao điều này đã được giảm giá - không hoàn toàn không chính xác. Năm tuổi. Ngớ ngẩn. – duffymo
Trường hợp sử dụng là gì? –
Lý do bình thường để "chuyển đối số bằng tham chiếu" là bạn muốn sửa đổi nó. Bạn có thể làm điều này thường trong Java bởi vì các biến trong tham chiếu thực tế - tuy nhiên việc sửa đổi một enum thường là một ý tưởng rất tồi. – DJClayworth