小编Vor*_*eir的帖子

Java风格的Groovy和Java一样快吗?

如果我理解正确Groovy是动态类型的,但由于它几乎是Java的超集,因此可以选择提供静态类型信息.如果只编写几个部分对性能至关重要的东西,同时避免使用多种语言的摩擦,这可能很有用.可以仅为性能关键部分提供类型注释.

在使用类似Java的子集和提供静态类型注释的函数/类中使用Groovy而不是Java的性能损失是什么?

java performance groovy static-typing groovy++

13
推荐指数
2
解决办法
431
查看次数

Groovy中如何序列化自定义对象

这段代码...

class A implements Serializable{
  String str
  int n
}

try{
  def a= new A(str:'abc', n:7)
  def out= new ObjectOutputStream(new FileOutputStream('serializedObject.obj'))
  out.writeObject(a)
  out.close()
}finally{}

try{
  def inp= new ObjectInputStream(new FileInputStream('serializedObject.obj'))
  def a2= inp.readObject()
  inp.close()
}finally{}
Run Code Online (Sandbox Code Playgroud)

...产生错误...

java.lang.ClassNotFoundException: A
    at java_io_ObjectInput$readObject.call(Unknown Source)
    at otherRun.run(otherRun.groovy:16)
Run Code Online (Sandbox Code Playgroud)

...当尝试在第二个 try 块中重新加载对象时。当该类是一个预定义的类(例如 java.util.List)时,它可以正常工作。将line-for-line 转换为 Java 时上面的代码也可以正常工作

我怎样才能让它在 Groovy 中工作?

groovy

5
推荐指数
1
解决办法
5961
查看次数

如何在Java静态方法上获取clojure句柄,类似于_memfn_用于Java实例方法?

为了处理我们稍后可以调用的Java实例方法,我们可以调用memfn函数:

user=> (def g (memfn Integer/toString))
#'user/g

user=> (g 789)
"789"
Run Code Online (Sandbox Code Playgroud)

这对Java静态方法不起作用:

user=> (def g (memfn Integer/toHexString))
#'user/g

user=> (g 789)
IllegalArgumentException No matching method found: toHexString for class java.lang.Long  clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:52)

user=> (g)
ArityException Wrong number of args (0) passed to: user$g  clojure.lang.AFn.throwArity (AFn.java:437)
Run Code Online (Sandbox Code Playgroud)

我们如何获得Java静态方法的句柄,以便稍后调用它?

clojure

3
推荐指数
1
解决办法
452
查看次数

标签 统计

groovy ×2

clojure ×1

groovy++ ×1

java ×1

performance ×1

static-typing ×1