Tag: jvm

类型擦除如何工作

我正在研究如何创建代理对象的库,特别是我想了解如何从声明的方法获取类型。 例如Android的流行库 – Retrofit: interface MyService { @GET("path") Call<MyData> getData(); } 我很困惑 – 如何从这个接口完全得到MyData类不是原始对象? 因为我的理解类型删除将删除放置在通用括号内的任何信息。 我写了一些测试代码,令人惊讶的是从这样的代码中获取类型真的很容易: @org.junit.Test public void run() { Method[] methods = Test.class.getDeclaredMethods(); Method testMethod = methods[0]; System.out.println(testMethod.getReturnType()); ParameterizedType genericType = ((ParameterizedType) testMethod.getGenericReturnType()); Class<Integer> clazz = (Class<Integer>) genericType.getActualTypeArguments()[0]; System.out.println(clazz); } interface Test { List<Integer> test(); } 它看起来有点肮脏,但它的工作原理和打印Integer 。 这意味着我们在运行时有类型。 另外我读过关于匿名类的另一个诡计: System.out.println(new ArrayList<Integer>().getClass().getGenericSuperclass()); 打印原始的AbstractList<E>而这个代码 […]

Vert.x. 如何创建一个真正的多语言JVM应用程序?

我正在检查Vert.x ,一个可以用几种不同的JVM语言运行应用程序的框架。 在vertx-examples中有大量的例子可用。 但问题是,(我还没有找到任何东西),我们如何才能以真正的多语言方式编写Vert.x应用程序(同时使用所有支持的JVM语言)? 例如,我们如何编写使用以下文件的代码: Java.java , Kotlin.kt , Javascript.js , Ruby.rb 。 其中每个人都有一个简单的函数,打印语言名称(例如Ruby.rb打印ruby )。 例如,当使用这个输入时: $vertx run Polyglot.java 我们怎样才能实现以下输出? java, kotlin, javascript, ruby 编辑 ,我的尝试: Polyglot.java import io.vertx.core.AbstractVerticle; import io.vertx.core.Launcher; import java.lang.management.ManagementFactory; public class Polyglot extends AbstractVerticle { public static void main(args: String[]) { Launcher.main(new String[] { "run", Polyglot.class.getName(), "-ha"}); } @Override public void […]

将强制和任意可选的构造函数参数与Groovy结合在一起

我试图确定,纯粹是出于兴趣,是否有可能通过使用命名和默认的构造函数参数完全删除在Groovy中使用Builder模式的需要; 即只使用内置的语言特征来解决伸缩构造问题。 例如,在Kotlin中,可以执行以下操作: data class Thing(val mandatory1: Int, val mandatory2: Int, val optional1: Int = 100, val optional2: Int = 200, val nullable: Int? = null) fun main(args: Array<String>) { val things = listOf( Thing(1, 2), Thing(1, 2, 3), Thing(1, 2, 3, 4), Thing(1, 2, 3, 4, 5), Thing(1, 2, optional2 = 4), Thing(1, 2, […]

如何使用kotlinpoet生成带有单个类型参数的Kotlin“Unit”类型的构造函数参数?

这可能是有点太具体张贴在这里,但我想用kotlinpoet生成这样的类: class Query<out E: Model>(val onSuccess: (E) -> Unit, val onError: (Int, String) -> Unit = { i, m -> }) 我将如何使用kotlinpoet创建该类型/构造函数参数? 文档确实有“ Unit ”类型与原始类型一起列出,所以它似乎是一个特例。

为什么有可能为JVM构建自定义语言,如Groovy,Scala,Clojure,Kotlin?

这些语言在很大程度上不同于Java,如OO系统,类型系统(最显着的)。 实际的问题是JVM是否跟踪引擎盖下的对象? JVM中是否有对象 ? 这些语言的创建者有责任与Java世界进行互操作,还是“默认”实现?

Kotlin未解决的参考:来自gradle上的println

在kotlin函数之前放置println语句将返回崩溃。 堆栈跟踪: thufir@dur:~/NetBeansProjects/kotlin$ thufir@dur:~/NetBeansProjects/kotlin$ gradle clean build –stacktrace w: Classpath entry points to a non-existent location: e: /home/thufir/NetBeansProjects/kotlin/src/main/kotlin/example.kt: (14, 5): Unresolved reference: println > Task :compileKotlin Using Kotlin incremental compilation FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileKotlin'. > Compilation error. See log for more details * Try: […]

JVM – 打开网页并运行Javascript代码

我发现你可以打开这样的网页(我正在使用Kotlin btw。) if (Desktop.isDesktopSupported()){ Desktop.getDesktop().browse(URI(url)) } 现在是否可以在当前网页上运行一些javascript代码来打开按钮等? (不使用像Selenium这样的外部库)。 谢谢

在同一个项目中使用多个JVM语言

我想在项目中使用Kotlin和Scala,也许还有一些其他的语言,但我没有看到这样做的好方法。 我想到的唯一方法是编译一种语言,并将其反编译为Java与其他语言一起工作。 有没有其他的选择?

错误:无法找到或加载主类Hello.class

尝试最简单的kotlin你好世界可能: thufir@dur:~/kotlin$ thufir@dur:~/kotlin$ ll total 32 drwxr-xr-x 2 thufir thufir 4096 Oct 27 07:28 ./ drwx—— 46 thufir thufir 16384 Oct 27 06:47 ../ -rw-r–r– 1 thufir thufir 104 Oct 27 07:27 Hello.kt thufir@dur:~/kotlin$ thufir@dur:~/kotlin$ kotlinc Hello.kt WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by com.intellij.util.text.StringFactory to constructor java.lang.String(char[],boolean) WARNING: […]

SAP NetWeaver AS Java是否支持JVM上的所有语言或仅支持Java?

SAP NW AS Java是否支持JVM上的所有语言(Kotlin,Scala,Jython ..),还是仅支持Java? 如果没有,除了ABAP和Java之外,还有其他语言可以用于SAP吗?