看起来该类型正在被展平,并被视为非数组类型(不适用于数组类型,而适用于非数组类型,与预期正好相反)。
简单复制
方面:
public aspect Aspect {
after() : call(public MaybeMissingClass MaybeMissingClass.*())
{
System.out.println("Aspect: MaybeMissingClass 1");
}
after() : call(public MaybeMissingClass[] MaybeMissingClass.*())
{
System.out.println("Aspect: MaybeMissingClass[] 2");
}
}
类别:
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
System.out.println("hello from main");
MaybeMissingClass.f1();
MaybeMissingClass.f2();
}
}
class MaybeMissingClass {
public static MaybeMissingClass f1(){System.out.println("hello from MaybeMissingClass.f1");return null;}
public static MaybeMissingClass[] f2(){System.out.println("hello from MaybeMissingClass.f2");return null;}
}
一起编译时的输出:
hello from main
hello from MaybeMissingClass.f1
Aspect: MaybeMissingClass 1
hello from MaybeMissingClass.f2
Aspect: MaybeMissingClass[] 2
hello from main
hello from MaybeMissingClass.f1
Aspect: MaybeMissingClass 1
Aspect: MaybeMissingClass[] 2
hello from MaybeMissingClass.f2
有人能解释一下吗?
编辑
呼叫时维度信息似乎丢失
resolveBindingsForMissingType()
而不是
resolveBindingsForExactType()
.