Is it possible to find methods during runtime passing a variable or a string name in Kotlin like in groovy
For example there is the possibility in grovy to execute a method using following code:
@Test
void shouldAccessMethodDynamically() {
DynamicClass dynamic = new DynamicClass()
String name = 'dynamicMethod'
assert dynamic."$name"() == "dynamic"
assert dynamic."dynamicMethod"() == "dynamic"
}
Is this also possible in Kotlin?
kotlin kotlin-reflect
add a comment |
For example there is the possibility in grovy to execute a method using following code:
@Test
void shouldAccessMethodDynamically() {
DynamicClass dynamic = new DynamicClass()
String name = 'dynamicMethod'
assert dynamic."$name"() == "dynamic"
assert dynamic."dynamicMethod"() == "dynamic"
}
Is this also possible in Kotlin?
kotlin kotlin-reflect
add a comment |
For example there is the possibility in grovy to execute a method using following code:
@Test
void shouldAccessMethodDynamically() {
DynamicClass dynamic = new DynamicClass()
String name = 'dynamicMethod'
assert dynamic."$name"() == "dynamic"
assert dynamic."dynamicMethod"() == "dynamic"
}
Is this also possible in Kotlin?
kotlin kotlin-reflect
For example there is the possibility in grovy to execute a method using following code:
@Test
void shouldAccessMethodDynamically() {
DynamicClass dynamic = new DynamicClass()
String name = 'dynamicMethod'
assert dynamic."$name"() == "dynamic"
assert dynamic."dynamicMethod"() == "dynamic"
}
Is this also possible in Kotlin?
kotlin kotlin-reflect
kotlin kotlin-reflect
edited Nov 25 '18 at 14:41
Jayson Minard
40k17112173
40k17112173
asked Nov 23 '18 at 14:55
lennykeylennykey
4462715
4462715
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You can call a method by name using regular java reflection API:
val dynamic = DynamicClass()
val name = "dynamicMethod"
dynamic.javaClass.getMethod(name).invoke(dynamic)
If you like to do it in more "kotlin way", you can use it like:
DynamicClass::class.memberFunctions.find { it.name == "name" }?.call(dynamic)
add a comment |
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%2f53448885%2fis-it-possible-to-find-methods-during-runtime-passing-a-variable-or-a-string-nam%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can call a method by name using regular java reflection API:
val dynamic = DynamicClass()
val name = "dynamicMethod"
dynamic.javaClass.getMethod(name).invoke(dynamic)
If you like to do it in more "kotlin way", you can use it like:
DynamicClass::class.memberFunctions.find { it.name == "name" }?.call(dynamic)
add a comment |
You can call a method by name using regular java reflection API:
val dynamic = DynamicClass()
val name = "dynamicMethod"
dynamic.javaClass.getMethod(name).invoke(dynamic)
If you like to do it in more "kotlin way", you can use it like:
DynamicClass::class.memberFunctions.find { it.name == "name" }?.call(dynamic)
add a comment |
You can call a method by name using regular java reflection API:
val dynamic = DynamicClass()
val name = "dynamicMethod"
dynamic.javaClass.getMethod(name).invoke(dynamic)
If you like to do it in more "kotlin way", you can use it like:
DynamicClass::class.memberFunctions.find { it.name == "name" }?.call(dynamic)
You can call a method by name using regular java reflection API:
val dynamic = DynamicClass()
val name = "dynamicMethod"
dynamic.javaClass.getMethod(name).invoke(dynamic)
If you like to do it in more "kotlin way", you can use it like:
DynamicClass::class.memberFunctions.find { it.name == "name" }?.call(dynamic)
edited Nov 23 '18 at 17:11
answered Nov 23 '18 at 16:58
Genetic ForestGenetic Forest
1,86331425
1,86331425
add a comment |
add a comment |
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.
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%2f53448885%2fis-it-possible-to-find-methods-during-runtime-passing-a-variable-or-a-string-nam%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