How to understand this snippet of Kotlin code?
I come from Java and I'm following a tutorial online regarding using the Volley
library to make web requests in Android.
The instructor created the request variable like this:
val registerRequest = object : StringRequest(Method.POST, URL_REGISTER, Response.Listener {
println(it) // will print the response
complete(true)
}, Response.ErrorListener {
Log.d("ERROR", "Could not register user: $it")
complete(false)
}) {
override fun getBodyContentType(): String {
return "application/json; charset=utf-8"
}
override fun getBody(): ByteArray {
return requestBody.toByteArray()
}
}
I understand that he's creating a registerRequest
variable of type StringRequest
. But what I don't understand is why he prefixed StringRequest
with object :
here.
Also I understand that StringRequest
constructor takes in an Int, String, Lambda, Lambda
. After that it becomes confusing to me because the developer was able to declare some override
methods after the constructor closes. Why did they do this? From what I can tell, this is similar to subclassing StringRequest, then writing the override methods there? Am I right?
Coming from Java, this way of writing code is quite unusual to me.
kotlin android-volley
add a comment |
I come from Java and I'm following a tutorial online regarding using the Volley
library to make web requests in Android.
The instructor created the request variable like this:
val registerRequest = object : StringRequest(Method.POST, URL_REGISTER, Response.Listener {
println(it) // will print the response
complete(true)
}, Response.ErrorListener {
Log.d("ERROR", "Could not register user: $it")
complete(false)
}) {
override fun getBodyContentType(): String {
return "application/json; charset=utf-8"
}
override fun getBody(): ByteArray {
return requestBody.toByteArray()
}
}
I understand that he's creating a registerRequest
variable of type StringRequest
. But what I don't understand is why he prefixed StringRequest
with object :
here.
Also I understand that StringRequest
constructor takes in an Int, String, Lambda, Lambda
. After that it becomes confusing to me because the developer was able to declare some override
methods after the constructor closes. Why did they do this? From what I can tell, this is similar to subclassing StringRequest, then writing the override methods there? Am I right?
Coming from Java, this way of writing code is quite unusual to me.
kotlin android-volley
3
it's an anonymous class, see kotlinlang.org/docs/reference/…. In java you would have seen= new StringRequest()...
– Tim Castelijns
Nov 23 '18 at 13:37
@TimCastelijns Ah that makes sense. Didn't know that you could do this stuff in Kotlin as it's a very different practice from Java. Thanks!
– fishhau
Nov 25 '18 at 3:35
1
You need to read and understand a breadth of Kotlin before dropping into reading random code. Make sure you have wall to wall coverage over Kotlin otherwise you'll keep finding mysterious code that you do not have the toolkit to decipher.
– Jayson Minard
Nov 25 '18 at 14:43
Thanks for the advice. I am actually taking a Kotlin online course right now to get more comfortable with the language.
– fishhau
Nov 26 '18 at 3:28
add a comment |
I come from Java and I'm following a tutorial online regarding using the Volley
library to make web requests in Android.
The instructor created the request variable like this:
val registerRequest = object : StringRequest(Method.POST, URL_REGISTER, Response.Listener {
println(it) // will print the response
complete(true)
}, Response.ErrorListener {
Log.d("ERROR", "Could not register user: $it")
complete(false)
}) {
override fun getBodyContentType(): String {
return "application/json; charset=utf-8"
}
override fun getBody(): ByteArray {
return requestBody.toByteArray()
}
}
I understand that he's creating a registerRequest
variable of type StringRequest
. But what I don't understand is why he prefixed StringRequest
with object :
here.
Also I understand that StringRequest
constructor takes in an Int, String, Lambda, Lambda
. After that it becomes confusing to me because the developer was able to declare some override
methods after the constructor closes. Why did they do this? From what I can tell, this is similar to subclassing StringRequest, then writing the override methods there? Am I right?
Coming from Java, this way of writing code is quite unusual to me.
kotlin android-volley
I come from Java and I'm following a tutorial online regarding using the Volley
library to make web requests in Android.
The instructor created the request variable like this:
val registerRequest = object : StringRequest(Method.POST, URL_REGISTER, Response.Listener {
println(it) // will print the response
complete(true)
}, Response.ErrorListener {
Log.d("ERROR", "Could not register user: $it")
complete(false)
}) {
override fun getBodyContentType(): String {
return "application/json; charset=utf-8"
}
override fun getBody(): ByteArray {
return requestBody.toByteArray()
}
}
I understand that he's creating a registerRequest
variable of type StringRequest
. But what I don't understand is why he prefixed StringRequest
with object :
here.
Also I understand that StringRequest
constructor takes in an Int, String, Lambda, Lambda
. After that it becomes confusing to me because the developer was able to declare some override
methods after the constructor closes. Why did they do this? From what I can tell, this is similar to subclassing StringRequest, then writing the override methods there? Am I right?
Coming from Java, this way of writing code is quite unusual to me.
kotlin android-volley
kotlin android-volley
edited Nov 23 '18 at 19:20
halfer
14.3k758109
14.3k758109
asked Nov 23 '18 at 13:35
fishhau
184
184
3
it's an anonymous class, see kotlinlang.org/docs/reference/…. In java you would have seen= new StringRequest()...
– Tim Castelijns
Nov 23 '18 at 13:37
@TimCastelijns Ah that makes sense. Didn't know that you could do this stuff in Kotlin as it's a very different practice from Java. Thanks!
– fishhau
Nov 25 '18 at 3:35
1
You need to read and understand a breadth of Kotlin before dropping into reading random code. Make sure you have wall to wall coverage over Kotlin otherwise you'll keep finding mysterious code that you do not have the toolkit to decipher.
– Jayson Minard
Nov 25 '18 at 14:43
Thanks for the advice. I am actually taking a Kotlin online course right now to get more comfortable with the language.
– fishhau
Nov 26 '18 at 3:28
add a comment |
3
it's an anonymous class, see kotlinlang.org/docs/reference/…. In java you would have seen= new StringRequest()...
– Tim Castelijns
Nov 23 '18 at 13:37
@TimCastelijns Ah that makes sense. Didn't know that you could do this stuff in Kotlin as it's a very different practice from Java. Thanks!
– fishhau
Nov 25 '18 at 3:35
1
You need to read and understand a breadth of Kotlin before dropping into reading random code. Make sure you have wall to wall coverage over Kotlin otherwise you'll keep finding mysterious code that you do not have the toolkit to decipher.
– Jayson Minard
Nov 25 '18 at 14:43
Thanks for the advice. I am actually taking a Kotlin online course right now to get more comfortable with the language.
– fishhau
Nov 26 '18 at 3:28
3
3
it's an anonymous class, see kotlinlang.org/docs/reference/…. In java you would have seen
= new StringRequest()...
– Tim Castelijns
Nov 23 '18 at 13:37
it's an anonymous class, see kotlinlang.org/docs/reference/…. In java you would have seen
= new StringRequest()...
– Tim Castelijns
Nov 23 '18 at 13:37
@TimCastelijns Ah that makes sense. Didn't know that you could do this stuff in Kotlin as it's a very different practice from Java. Thanks!
– fishhau
Nov 25 '18 at 3:35
@TimCastelijns Ah that makes sense. Didn't know that you could do this stuff in Kotlin as it's a very different practice from Java. Thanks!
– fishhau
Nov 25 '18 at 3:35
1
1
You need to read and understand a breadth of Kotlin before dropping into reading random code. Make sure you have wall to wall coverage over Kotlin otherwise you'll keep finding mysterious code that you do not have the toolkit to decipher.
– Jayson Minard
Nov 25 '18 at 14:43
You need to read and understand a breadth of Kotlin before dropping into reading random code. Make sure you have wall to wall coverage over Kotlin otherwise you'll keep finding mysterious code that you do not have the toolkit to decipher.
– Jayson Minard
Nov 25 '18 at 14:43
Thanks for the advice. I am actually taking a Kotlin online course right now to get more comfortable with the language.
– fishhau
Nov 26 '18 at 3:28
Thanks for the advice. I am actually taking a Kotlin online course right now to get more comfortable with the language.
– fishhau
Nov 26 '18 at 3:28
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53447714%2fhow-to-understand-this-snippet-of-kotlin-code%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53447714%2fhow-to-understand-this-snippet-of-kotlin-code%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
3
it's an anonymous class, see kotlinlang.org/docs/reference/…. In java you would have seen
= new StringRequest()...
– Tim Castelijns
Nov 23 '18 at 13:37
@TimCastelijns Ah that makes sense. Didn't know that you could do this stuff in Kotlin as it's a very different practice from Java. Thanks!
– fishhau
Nov 25 '18 at 3:35
1
You need to read and understand a breadth of Kotlin before dropping into reading random code. Make sure you have wall to wall coverage over Kotlin otherwise you'll keep finding mysterious code that you do not have the toolkit to decipher.
– Jayson Minard
Nov 25 '18 at 14:43
Thanks for the advice. I am actually taking a Kotlin online course right now to get more comfortable with the language.
– fishhau
Nov 26 '18 at 3:28