2016-02-08 14 views
15

dùng IntelliJ 15.0.3 + Java 8u65 ...Tại sao "tràn Numeric trong khái niệm" cảnh báo xảy ra

lower = System.currentTimeMillis(); 
long upper = lower + 31536000000L; //add a year-ish 

trình tốt. Nhưng nếu tôi làm như vậy:

lower = System.currentTimeMillis(); 
long upper = lower + (1000L*60*60*24*365); 

Intellij bây giờ đưa ra cảnh báo "tràn số trong biểu thức". Tôi sẽ hiểu nếu điều này là đúng sự thật, và nó đã được cảnh báo liên tục trên cả hai biểu thức, nhưng nó không phải.

Bất kỳ ai cũng biết tại sao biểu thức thứ 2 tạo ra cảnh báo? Tôi muốn có phân tích theo cách này hơn một con số bởi vì nó dễ dàng hơn cho các nhà phát triển khác trong dự án để hiểu những gì nó đang làm (mặc dù tôi cho rằng tôi có thể bình luận). Mã vẫn biên dịch rõ ràng nhưng tôi thấy cảnh báo trong các bản dựng của tôi giống như một vết ngứa mà tôi không thể làm xước được.

EDIT Cảm ơn cho câu trả lời ... Tôi nghĩ rằng đây chỉ là một vấn đề bộ nhớ đệm trong Intellij ... Nếu tôi biết sao chép/dán trên, chúng tôi không nhận được cảnh báo. Nếu tôi cố gắng chỉnh sửa sau khi dán 1 hoặc 2 lần trong số 10, tôi sẽ nhận được cảnh báo xuất hiện.

+0

Liệu warning mất đi nếu bạn thực hiện một cách rõ ràng mỗi số dài chứ không phải chỉ là người đầu tiên? – JonK

+0

@GordonM 1. [thẻ: java] của nó không phải là [thẻ: javascript] 2. 'L' ở cuối số có nghĩa là nó là [long] (https://docs.oracle.com/javase/7 /docs/api/java/lang/Long.html) gõ – Ferrybig

+0

@ JonK không có tôi đã thử điều đó - nhưng xem chỉnh sửa, tôi nghĩ rằng nó chỉ là một vấn đề bộ nhớ đệm kỳ lạ –

Trả lời

8

Tôi vừa thử điều này trên máy của mình. Phiên bản tương tự của intellij, nhưng một chút mới hơn java 1.8.0_66. Nếu tôi sao chép dán mã của bạn và giả sử thấp hơn là một thời gian dài, tôi không nhận được cảnh báo. Nếu tôi loại bỏ "L" tôi nhận được cảnh báo (rõ ràng). Nếu tôi đặt "L" trở lại cảnh báo không biến mất. Nếu tôi đóng và mở lại IntelliJ thì cảnh báo sẽ biến mất.

Đã thêm vào theo dõi vấn đề: IDEA-151378

+0

Vẫn đang xảy ra với Intellij 2016.2.5 + JVM 1.8.0_112 – Florent

Các vấn đề liên quan