Tôi đã viết các phương pháp này trong Kotlin và phân tích các bytecode:Kotlin đối tượng vs bạn đồng hành đối tượng vs gói scoped phương pháp
Tình hình 1
class A {
object b {
fun doSomething() {}
}
}
Tình hình 2
class A {
companion object b {
fun doSomething() {}
}
}
Tình huống 3
fun doSomething() {}
Bytecode quả
- Trường hợp 1: lớp
Test$asb
,public final doSomething()I
- Trường hợp 2: lớp
Test$Companion
,public final doSomething()I
- Tình huống 3: lớp
TestKt
,public final static doSomething()I
Câu hỏi của tôi là:
Tôi có một lớp enum, và tôi muốn trả về một instum enum cho một biến enum, ví dụ, findById
(enum(id, color))
. Tôi sẽ làm như thế nào? Đối tượng đồng hành? vật?Có vẻ như cách duy nhất để có phương thức tĩnh thực sự là ở cấp gói, không có khai báo lớp. Nhưng điều đó trở nên quá toàn cầu. Có cách nào để truy cập thông qua:
ClassName.staticMethod
, staticMethod thực sự tĩnh hay không.Cung cấp các ví dụ đầy đủ về các phương pháp khai báo gói, đối tượng và đối tượng đồng hành.
Bối cảnh. Tôi đã được mã hóa trong Kotlin và tôi thấy nó tuyệt vời. Nhưng đôi khi tôi cần phải đưa ra quyết định: ví dụ, một tài sản bất biến nặng mà trong java tôi sẽ khai báo là tĩnh cuối cùng, nhưng trong Kotlin tôi thấy khó để "tìm thấy một tương đương".
Có lẽ điều này có thể trợ giúp {http://stackoverflow.com/q/37794850/2804610} – EPadronU
Trong rega rds cho đoạn cuối của bạn, tôi nghĩ rằng câu trả lời này có thể giúp bạn {http://stackoverflow.com/a/37944990/2804610} – EPadronU