class
本身似乎有外包的包。
getModifiers()
value is 8
,根據評論是:static, package private
。
其static
(爲什麼?)。我無法在Main
的匿名課堂內參考Main.this
。
其package private
。儘管如此,匿名類的訪問級別甚至沒有多大意義,因爲在編譯時您不能像普通類一樣使用它的類型。
https://ideone.com/vzbdQ5
// JDK 8
import java.lang.reflect.Modifier;
public class Main {
public static void main(String[] args) throws Exception {
Class anon = new Main() {}.getClass();
System.out.println("Name:" + anon.getName()); // Main$1
System.out.println("Anonymous:" + anon.isAnonymousClass()); // true
System.out.println("Package:" + anon.getPackage()); // null
System.out.println("public ? " + Modifier.isPublic(anon.getModifiers())); // false
System.out.println("private ? " + Modifier.isPrivate(anon.getModifiers())); // false
System.out.println("protected ? " + Modifier.isProtected(anon.getModifiers())); // false
assert anon.newInstance() instanceof Main;
assert Class.forName(anon.getName()).newInstance() instanceof Main;
}
}
我認爲你引用的類本身不脫毛多少光的問題。錯誤是由於一個錯誤,而錯誤是關於方法的可訪問性,而不是類。班級本身不是一個成員,因此「訪問」它是毫無意義的。 – RealSkeptic