Introspection: Difference between revisions
Content added Content deleted
m (→{{header|REXX}}: added whitespace, changed some comments in the section headers.) |
(Added Kotlin) |
||
Line 910: | Line 910: | ||
julia> VERSION > v"0.3.1" |
julia> VERSION > v"0.3.1" |
||
true</lang> |
true</lang> |
||
=={{header|Kotlin}}== |
|||
We will use Java reflection for this task as Kotlin's own reflection facilities do not appear to be able to deal generically with top-level entities at the present time (i.e. ::class isn't yet supported): |
|||
<lang scala>// version 1.0.6 (intro.kt) |
|||
import java.lang.reflect.Method |
|||
val bloop = -3 |
|||
val i = 4 |
|||
val j = 5 |
|||
val k = 6 |
|||
fun main(args: Array<String>) { |
|||
// get version of JVM |
|||
val version = System.getProperty("java.version") |
|||
if (version >= "1.6") println("The current JVM version is $version") |
|||
else println("Must use version 1.6 or later") |
|||
// check that 'bloop' and 'Math.abs' are available |
|||
// note that the class created by the Kotlin compiler for top level declarations will be called 'IntroKt' |
|||
val topLevel = Class.forName("IntroKt") |
|||
val math = Class.forName("java.lang.Math") |
|||
val abs = math.getDeclaredMethod("abs", Int::class.java) |
|||
val methods = topLevel.getDeclaredMethods() |
|||
for (method in methods) { |
|||
// note that the read-only Kotlin property 'bloop' is converted to the static method 'getBloop' in Java |
|||
if (method.name == "getBloop" && method.returnType == Int::class.java) { |
|||
println("\nabs(bloop) = ${abs.invoke(null, method.invoke(null))}") |
|||
break |
|||
} |
|||
} |
|||
// now get the number of global integer variables and their sum |
|||
var count = 0 |
|||
var sum = 0 |
|||
for (method in methods) { |
|||
if (method.returnType == Int::class.java) { |
|||
count++ |
|||
sum += method.invoke(null) as Int |
|||
} |
|||
} |
|||
println("\nThere are $count global integer variables and their sum is $sum") |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
The current JVM version is 1.8.0_121 |
|||
abs(bloop) = 3 |
|||
There are 4 global integer variables and their sum is 12 |
|||
</pre> |
|||
=={{header|Lasso}}== |
=={{header|Lasso}}== |