हम जावा एनोटेशन घोषणा में कोटलिन स्थिरांक को कैसे संदर्भित कर सकते हैं?


13

कोटलिन के इस बिट को देखते हुए:

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

और यह जावा वर्ग:

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

कंपाइलर println()कॉल से खुश है । यह के उपयोग के बारे में शिकायत COWBOY_HATSमें @Namedएनोटेशन, यह कहते हुए इस Android स्टूडियो 3.5.3 स्क्रीनशॉट में देखा "गुण मूल्य स्थिर होना चाहिए",:

कोटलिन त्रुटि

मैंने कोशिश की @JvmStaticऔर @JvmFieldउन const valघोषणाओं पर, लेकिन संकलक शिकायत करता है कि न तो constगुणों के लिए मान्य हैं।

मैं एक ही से परिणाम प्राप्त companion object:

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

क्या कोई अन्य कोटलिन निरंतर वाक्यविन्यास है जो जावा एनोटेशन से संदर्भित होने पर काम करता है?


अंतिम घाटी? .....
रिक सांचेज़

आप किस कोटलिन संस्करण का उपयोग कर रहे हैं? मैं इसे पुन: पेश नहीं कर सकता।
नटारियो

@RickSanchez: final const val"फाइनल एक निरर्थक संशोधक" है। न तो वह final valसमस्या को दूर करता है।
कॉमन्सवेयर

@natario: कोटलिन 1.3.61
कॉमन्सवेयर

@natario: यह इंगित करने के लिए धन्यवाद कि आप इसे नहीं रोक सकते! ऐसा लगता है कि यह एक दुष्ट एंड्रॉइड स्टूडियो निरीक्षण त्रुटि है - कोड ठीक संकलित करता है।
कॉमन्सवेयर

जवाबों:


10

मैं यह देखना भूल गया कि क्या यह एक एंड्रॉइड स्टूडियो बग था। : Facepalm:

यह पता चला है कि यदि आप कोड चलाते हैं, तो यह ठीक चलता है। एंड्रॉइड स्टूडियो 3.5.3 अनावश्यक रूप से शिकायत करता प्रतीत होता है।

मैंने समस्या की पुष्टि करने का प्रयास करने के लिए एक बग रिपोर्ट दायर की ।

@Natario को बहुत धन्यवाद, जिनकी टिप्पणी ने मुझे एहसास दिलाया कि यह एक आईडीई समस्या हो सकती है!


ठंडा! इसके लायक मैं एएस (अभी भी 3.5) के थोड़े पुराने संस्करण का उपयोग कर रहा हूं।
नटारियो

ओह मैं समझा! मेरे पास एक पुराना संस्करण भी है, 3.3.2
एल्विनल्वोर्ड

1
कोटलिन 1.3.70 के रूप में यह समस्या हल हो गई है (एंड्रॉइड स्टूडियो 3.6.1 में)
मैथ्यू बह्र
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.