Code droit:Dans quelle situation val/var est-il nécessaire dans le paramètre constructeur de Kotlin?
class MainActHandler(val weakActivity: WeakReference<Activity>): Handler() {
override fun handleMessage(msg: Message?) {
val trueAct = weakActivity.get() ?: return
if (msg?.what == ConversationMgr.MSG_WHAT_NEW_SENTENCE){
val sentence = msg.obj as String?
trueAct.conversation.text = sentence
}
super.handleMessage(msg)
}
}
ne peut pas être résolu le code:
class MainActHandler(weakActivity: WeakReference<Activity>): Handler() {
override fun handleMessage(msg: Message?) {
val trueAct = weakActivity.get() ?: return
if (msg?.what == ConversationMgr.MSG_WHAT_NEW_SENTENCE){
val sentence = msg.obj as String?
trueAct.conversation.text = sentence
}
super.handleMessage(msg)
}
}
cannot be resolved code screenshot
La seule différence est le "val" a été supprimé et ne peut pas être résoudre.
Ce qui pourrait être important est que c'est une classe interne.
MAIS
Celui-ci classe sans "val/var" dans le paramètre constructeur fonctionne:
class BookInfo(convrMgr: ConversationMgr, id: String, queue: RequestQueue, queueTag:String) {
val TAG = "BookInfo"
var title: String? = ""
init {
val url = "https://api.douban.com/v2/book/$id"
// Request a string response from the provided URL.
val stringRequest = StringRequest(Request.Method.GET, url,
Response.Listener<String> { response ->
Log.d(TAG + " Response", response.substring(0))
// Parse JSON from String value
val parser = Parser()
val jsonObj: JsonObject =
parser.parse(StringBuilder(response.substring(0))) as JsonObject
// Initial book title of book properties.
title = jsonObj.string("title")
Log.d(TAG + " Book title", title)
convrMgr.addNewMsg(title)
},
Response.ErrorListener { error -> Log.e(TAG + " Error", error.toString()) })
// Set the tag on the request.
stringRequest.tag = queueTag
// Add the request to the RequestQueue.
queue.add(stringRequest)
}
}
Et si j'ajoute var/val avant « file d'attente: RequestQueue ", je vais avoir une suggestion:
" Le paramètre Constructeur n'est jamais utilisé comme propriété moins. rapports d'inspection paramètres de constructeur primaire qui peuvent avoir 'val' ou 'var' enlevé. l'utilisation non nécessaire de « val » et « var » dans le constructeur primaire consomme de la mémoire inutile. »
Je suis tout confus à ce sujet.