Làm thế nào chúng ta có thể tham chiếu các hằng số Kotlin trong một tuyên bố chú thích Java?


13

Đưa ra một chút của Kotlin:

object OldTownRoad {
  const val COWBOY_HATS = "from Gucci"
  const val WRANGLER = "on my booty"
}

và lớp Java này:

public class Scrap {
  @Named(OldTownRoad.COWBOY_HATS)
  public void lilNasXrefs() {
    System.out.println(OldTownRoad.COWBOY_HATS);
    System.out.println(OldTownRoad.WRANGLER);
  }
}

Trình biên dịch hài lòng với các println()cuộc gọi. Nó phàn nàn về việc sử dụng COWBOY_HATStrong @Namedchú thích, nói rằng "Giá trị thuộc tính phải không đổi", như đã thấy trong ảnh chụp màn hình Android Studio 3.5.3 này:

Lỗi Kotlin

Tôi đã thử @JvmStatic@JvmFieldtrên các const valkhai báo đó, nhưng trình biên dịch phàn nàn rằng không hợp lệ cho constcác thuộc tính.

Tôi nhận được kết quả tương tự từ một companion object:

class OldTownRoad {
  companion object {
    const val COWBOY_HATS = "from Gucci"
    const val WRANGLER = "on my booty"
  }
}

Có một số cú pháp hằng số Kotlin khác hoạt động khi được tham chiếu từ một chú thích Java không?


val cuối cùng? .....
Rick Sanchez

Phiên bản Kotlin nào bạn đang sử dụng? Tôi không thể tái tạo điều này.
natario

@RickSanchez: final const valkết quả trong "cuối cùng là một sửa đổi dự phòng". Không phải điều đó cũng không final vallàm sáng tỏ vấn đề.
CommonsWare

@natario: Kotlin 1.3.61
CommonsWare

@natario: Cảm ơn bạn đã chỉ ra rằng bạn không thể repro nó! Có vẻ như đây là lỗi kiểm tra Android Studio giả mạo - mã biên dịch tốt.
CommonsWare

Câu trả lời:


10

Tôi quên xem đây có phải là lỗi của Android Studio không. : facepalm:

Hóa ra nếu bạn chạy mã, nó sẽ chạy tốt. Android Studio 3.5.3 dường như đang phàn nàn không cần thiết.

Tôi đã nộp một báo cáo lỗi để cố gắng xác nhận vấn đề.

Rất cám ơn @natario, người đã bình luận khiến tôi nhận ra rằng đây có thể là một vấn đề IDE!


Mát mẻ! Đối với những gì đáng giá tôi đang sử dụng một phiên bản AS cũ hơn một chút (vẫn là 3,5).
natario

Ồ tôi hiểu rồi! Tôi cũng có phiên bản cũ hơn, 3.3.2
alvinalvord

1
Kể từ phiên bản Kotlin 1.3,70, vấn đề này đã được giải quyết (trong Android Studio 3.6.1)
Matthew Bahr
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.