小编soc*_*soc的帖子

如何找出JVM应用于我的代码的优化?

JVM(尤其是HotSpot VM)因其在运行时可以应用的大量优化而闻名.

有没有办法查看某段代码,看看JVM实际上对它做了什么?

java compiler-construction optimization jvm vm-implementation

10
推荐指数
1
解决办法
472
查看次数

如何检查当前方法的参数是否有注释并在Java中检索该参数值?

考虑以下代码:

public example(String s, int i, @Foo Bar bar) {
  /* ... */
}
Run Code Online (Sandbox Code Playgroud)

我想检查方法是否有注释@Foo并获取参数或如果没有@Foo找到注释则抛出异常.

我目前的方法是首先获取当前方法,然后遍历参数注释:

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

class Util {

    private Method getCurrentMethod() {
        try {
            final StackTraceElement[] stes = Thread.currentThread().getStackTrace();
            final StackTraceElement ste = stes[stes.length - 1];
            final String methodName = ste.getMethodName();
            final String className = ste.getClassName();   
            final Class<?> currentClass = Class.forName(className);
            return currentClass.getDeclaredMethod(methodName);
        } catch (Exception cause) {
            throw new UnsupportedOperationException(cause);
        }  
    }

    private Object getArgumentFromMethodWithAnnotation(Method method, Class<?> annotation) {
        final …
Run Code Online (Sandbox Code Playgroud)

java reflection methods annotations class

10
推荐指数
1
解决办法
9393
查看次数

使用Singleton对象作为枚举元素的Scala枚举以及迭代它们的可能性?

我已经看过关于模拟Javaenum案例类与EnumerationScala问题,但似乎太多的努力,太少的好处.

基本上我想有一个values方法返回所有单例对象DayOfWeek而不重复自己几次.

这就是我的代码应该是这样的:

object DayOfWeek extends MyEnum {
  object MONDAY extends DayOfWeek(1)
  object TUESDAY extends DayOfWeek(2)
  object WEDNESDAY extends DayOfWeek(3)
  object THURSDAY extends DayOfWeek(4)
  object FRIDAY extends DayOfWeek(5)
  object SATURDAY extends DayOfWeek(6)
  object SUNDAY extends DayOfWeek(7)
}

class DayOfWeek(ordinal: Int)
Run Code Online (Sandbox Code Playgroud)

该方法values应返回类似如下所示的内容:

val values = Array(MONDAY, TUESDAY, WEDNESDAY, THURSDAY,
                   FRIDAY, SATURDAY, SUNDAY)
Run Code Online (Sandbox Code Playgroud)

一切都应该在MyEnum特质中发生,所以我只需要扩展它来获得功能.

trait MyEnum {
  val values = this.getClass.getField("MODULE$") etc. etc.
}
Run Code Online (Sandbox Code Playgroud)

有什么建议可以做到这一点吗?这个想法是values访问类并找到它们正在扩展的类的所有单例对象. …

java reflection enums scala

9
推荐指数
1
解决办法
2258
查看次数

为什么我可以为单位值赋值null,为什么它会转换为()?

考虑以下代码:

var unit: Unit = null
unit: Unit = ()
Run Code Online (Sandbox Code Playgroud)

a)为什么我允许将null赋给值类?(见§12.2.3)

b)为什么null转换为()

null scala class unit-type

9
推荐指数
1
解决办法
217
查看次数

如何在编译时获取单例对象的类?

考虑这样的事情:

object Singleton

val cls: Class[Singleton] = ???
Run Code Online (Sandbox Code Playgroud)

我需要写什么而不是???

我试过classOf[Singleton],classOf[Singleton.type],Singleton.type,但毫无效果.

(我当然知道getClass,运行时版本classOf,但那不是我要问的.)

singleton programming-languages scala language-design class

9
推荐指数
1
解决办法
1826
查看次数

如何在CLR上运行需要协变返回类型和"真实"类方差的语言Scala?

CLR不支持协变返回类型完全方差(即应用于类,而不仅仅是接口和委托),但有些语言针对CLR使用这些功能中的一个或两个.

CLR是否有一些实用的解决方法来启用此功能,或者这些语言是否采用某种重写/擦除/ ...技术来完全支持其功能集?

c# clr types c#-2.0

9
推荐指数
1
解决办法
380
查看次数

是否可以在具有Hibernate和AspectJ的Java项目中使用SBT?

我需要配置什么以及自动运行什么?据我所知,使用两者都可能有点棘手,因为两者都使用字节码编织.我可以继续使用更方便的配置语法,还是需要"完整"的Scala版本?

目前我正在尝试使用Maven,但没有取得多大成功.

java hibernate aspectj maven sbt

9
推荐指数
1
解决办法
437
查看次数

AspectJ中的类型间声明的简短示例是什么,它证明了该方法的有用性?

我首先考虑使用ITD来定义private static final Logger logger = ...一些不相​​关的案例,但它看起来不像使用它作为演示示例的明显改进.

是否有一些标准/建议的ITD使用示例,人们应该将其用于教学目的?

java logging types aspectj

9
推荐指数
2
解决办法
4476
查看次数

什么时候在F#中支持无类型的打字报价?

F#有类型和无类型的代码引用,我想知道哪个用户会选择一个而不是另一个?

区别只是方便和无类型和类型化的引用在所有情况下都可以转换为每种情况,或者是类型化的引用,例如可能使用无类型引用的子集?

有没有任何例子只适用于打字,但没有使用无类型报价 - 或者相反?

f# types programming-languages metaprogramming quotations

9
推荐指数
1
解决办法
290
查看次数

将宏计算结果传递给运行时的推荐方法是什么?

我正在尝试构建一些类似SQL的抽象,我遇到了一个问题.

这是一个简化的"数据库表":

trait Coffee {
  def id: Long
  def name: String
  def brand: String
}
Run Code Online (Sandbox Code Playgroud)

这是我的查询抽象:

import language.experimental.macros

object Query {  
  def from[T] = 
    macro QueryMacros.fromMacro[T]
}

class From[T] {  
  def select[S](s: T => S): Select[T] =
    macro QueryMacros.selectMacro[T, S]
}

class Select[T] {
  def where(pred: T => Boolean): Where =
    macro QueryMacros.whereMacro[T]
}

class Where(val result: String)
Run Code Online (Sandbox Code Playgroud)

这是我的宏实现:

import scala.reflect.macros.Context

object QueryMacros {
  val result = new StringBuilder

  def fromMacro[T : c.WeakTypeTag](c: Context): c.Expr[From[T]] = { 
    result ++= ("FROM …
Run Code Online (Sandbox Code Playgroud)

sql macros scala compilation

9
推荐指数
1
解决办法
310
查看次数