Tôi có một hàm phân tích cú pháp độ dài được mã hóa từ một bộ đệm byte, nó trả về độ dài được phân tích là int và đưa chỉ mục vào bộ đệm dưới dạng số nguyên arg. Tôi muốn hàm cập nhật chỉ mục theo những gì được phân tích cú pháp, tức là muốn chuyển chỉ mục đó theo tham chiếu. Trong C Tôi chỉ cần vượt qua một int *
. Cách sạch nhất để làm điều này trong Java là gì? Tôi hiện đang xem xét việc chuyển chỉ số arg. dưới dạng int[]
, nhưng hơi xấu xí.Java: Cách tốt nhất để chuyển int bằng tham chiếu
Trả lời
Bạn có thể thử sử dụng org.apache.commons.lang.mutable.MutableInt
từ thư viện Apache Commons. Không có cách trực tiếp để làm điều này trong ngôn ngữ chính nó.
Bạn không thể chuyển đối số theo tham chiếu trong Java.
Việc bạn có thể làm là bọc giá trị số nguyên của mình vào đối tượng có thể thay đổi. Sử dụng Apache Commons 'MutableInt
là một lựa chọn tốt. Cách khác, hơi bị xáo trộn hơn, là sử dụng int[]
như bạn đã đề xuất. Tôi sẽ không sử dụng nó vì nó không rõ ràng là tại sao bạn đang gói một int
trong một mảng đơn bào.
Lưu ý rằng java.lang.Integer
là không thay đổi.
Điều này là không thể trong Java. Như bạn đã đề xuất một cách là để vượt qua một int[]
. Người khác sẽ có một lớp nhỏ, ví dụ: IntHolder
quấn int
.
Đưa bộ đệm byte và chỉ mục vào đối tượng ByteBuffer. Một ByteBuffer gói gọn khái niệm về vị trí buffer + và cho phép bạn đọc và ghi từ vị trí được lập chỉ mục, nó cập nhật khi bạn đi theo.
Chính xác. Đừng ép buộc Java làm theo cách của bạn, làm theo cách Java. Java không phải là C. Cố gắng để làm cho nó hoạt động như C sẽ luôn luôn là hacks xấu xí. –
Bạn có thể thiết kế đẳng cấp mới như thế này:
public class Inte{
public int x=0;
}
sau đó bạn có thể tạo đối tượng của lớp này:
Inte inte=new Inte();
sau đó bạn có thể vượt qua inte
như là đối số mà bạn muốn vượt qua một biến số nguyên :
public void function(Inte inte) {
some code
}
để cập nhật giá trị số nguyên:
inte.x=value;
để nhận giá trị:
Variable=inte.x;
Bạn có thể sử dụng java.util.concurrent.atomic.AtomicInteger
.
Bạn có thể tạo ra một lớp tham khảo để quấn nguyên thủy:
public class Ref<T>
{
public T Value;
public Ref(T value)
{
Value = value;
}
}
Sau đó, bạn có thể tạo ra các chức năng mà phải mất một tham chiếu như một tham số:
public class Utils
{
public static <T> void Swap(Ref<T> t1, Ref<T> t2)
{
T temp = t1.Value;
t1.Value = t2.Value;
t2.Value = temp;
}
}
Cách sử dụng:
Ref<Integer> x = 2;
Ref<Integer> y = 9;
Utils.Swap(x, y);
System.out.println("x is now equal to " + x.Value + " and y is now equal to " + y.Value";
// Will print: x is now equal to 9 and y is now equal to 2
Hi vọng điêu nay co ich.
- 1. Tham chiếu Chuyển tiếp Pháp lý Java
- 2. Chuyển mảng bằng tham chiếu trong C?
- 3. c + + chuyển bản đồ bằng cách tham chiếu đến hàm
- 4. java Tham chiếu Integer
- 5. Thực hành tốt nhất để tham chiếu Java bên trong JSP của tôi
- 6. Cách tốt nhất để tạo ảnh cắt dán (bằng Java)
- 7. Cách tốt nhất để làm rỗng bảng tự tham chiếu MySQL là gì?
- 8. Cách tốt nhất để theo dõi một số tham chiếu giữa các hàm trong ST monad?
- 9. Tham chiếu javascript tốt
- 10. Tôi có thể chuyển tham số bằng tham chiếu trong Java không?
- 11. tham chiếu hoặc trả lại - thực hành tốt nhất
- 12. Cách tốt nhất để lưu trữ các hằng số được tham chiếu trong DB?
- 13. Cách tốt nhất để chuyển đổi ByteString thành Int là gì?
- 14. Chuyển đổi Số Java thành BigDecimal: cách tốt nhất
- 15. Tham chiếu Boost tốt hơn?
- 16. cách thanh lịch nhất để chuyển đổi một byte đến một int trong Java
- 17. chuyển một con trỏ bằng tham chiếu trong C++
- 18. chuyển enums bằng cách ref trong java
- 19. Tôi có thể giảm phân bổ bộ nhớ bằng cách chuyển tham số DateTime bằng tham chiếu trong C#?
- 20. Làm cách nào để tham chiếu tài nguyên trong Java?
- 21. Cách tốt nhất để chuyển nhiều tham số đến phương thức gọi lại Threading.Timer là gì?
- 22. Có gì sai khi chuyển qua trình lặp C++ bằng cách tham chiếu?
- 23. Tôi làm cách nào để chuyển tham chiếu đến call_user_func?
- 24. Cách chuyển tham số dưới dạng tham chiếu với MethodInfo.Invoke
- 25. Handlebars: Cách tốt nhất để chuyển nhiều tham số đến hàm registerHelper là gì?
- 26. Nơi tốt nhất để đặt các tệp DLL của bên thứ ba để tham chiếu
- 27. chuyển đổi ngầm định: tham chiếu const vs tham chiếu không const vs phi tham khảo
- 28. Cách tốt nhất để chuyển đổi Pascal Case thành câu
- 29. Cách tốt nhất để thử dịch vụ web java
- 30. Cách tốt nhất để tham gia các bảng bằng cách sử dụng sqlite trong android
'Số nguyên' là không thay đổi. –
Nếu bạn muốn tránh thư viện apache, bạn có thể chuyển int và trả về giá trị cập nhật. Nếu đó là hai giá trị, tôi khuyên bạn nên sử dụng Point làm vùng chứa. Nếu không, tùy chọn mảng hoặc một trong các đề xuất khác ở đây là tốt. – EntangledLoops
Bạn nên quay trở lại một int hoặc một đối tượng; Nếu bạn thực sự cần nhiều hơn một, có lẽ bạn nên suy nghĩ lại về thiết kế 'lớp học' của bạn –