小编Pin*_*est的帖子

如何定义一个aspectj切入点,用于选择具有特定注释的类的所有构造函数?

这是注释:

@Target(value = ElementType.TYPE)
@Retention(value = RetentionPolicy.RUNTIME)
@Inherited
public @interface MyAnnotation {
    String name();
}
Run Code Online (Sandbox Code Playgroud)

这是一个带注释的类:

@MyAnnotation(name="foo")
public class ClassA {
    public ClassA() {
        // Do something
    }
}
Run Code Online (Sandbox Code Playgroud)

这是第二个带注释的类:

@MyAnnotation(name="bar")
public class ClassB {
    public ClassB(String aString) {
        // Do something
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个aspectj切入点,正确匹配ClassA和ClassB的构造函数,而不匹配任何其他未注释的类的构造函数MyAnnotation.

constructor annotations aspectj pointcut

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

为什么在visualvm(jhat?)oql中使用javascript有时令人困惑?

我有兴趣知道为什么visualvm OQL在以下语句中有问题:

select filter(heap.objects("java.util.HashMap"), isTrue(it));

function isTrue(object) {  
  return true;  
}
Run Code Online (Sandbox Code Playgroud)

例外情况是:

javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "it" is not defined. (#1)
Run Code Online (Sandbox Code Playgroud)

相比之下,visualvm OQL在以下任何示例中都没有问题:

示例1(注意"它"未引用):

select filter(heap.objects("java.util.HashMap"),  
    function(it) {  
      return true;  
    });
Run Code Online (Sandbox Code Playgroud)

示例2(注意"它"被引用):

select filter(heap.objects("java.util.HashMap"), isTrue("it"));  

function isTrue(object) {  
  if (object instanceof String) {  
    throw "String passed!";  
  }  
  return true;  
}
Run Code Online (Sandbox Code Playgroud)

示例3("函数(it)"由于某种原因在OQL中专门处理?):

select filter(heap.objects("java.util.HashMap"), function(it) { return isTrue(it); });

function isTrue(object) {  
  return true;  
}
Run Code Online (Sandbox Code Playgroud)

我问这个是因为它看起来不直观,非直观行为的变化出乎意料地出现,当我试图创造可用的东西时,我放慢了速度.

javascript jhat visualvm oql

2
推荐指数
1
解决办法
913
查看次数

标签 统计

annotations ×1

aspectj ×1

constructor ×1

javascript ×1

jhat ×1

oql ×1

pointcut ×1

visualvm ×1