使用以下语法声明对包的依赖关系有什么区别:“ == 1.2.3”(我理解,在规范中已明确说明)和仅“ 1.2.3”(我也看到正在使用) ,但脚本中未解释)?这是否像一个软约束,使软件包管理器有更大的自由来解析到另一个版本?
谢谢
我在理解Java中内部类的访问标志(特别是私有)的使用时遇到了问题.我在字节代码中找到的标志似乎与反射API提供的信息不一致.
我附上以下程序来说明问题.该程序有一个私有内部类,并使用三种不同的方法进行自我分析:
令人惊讶的是,这给出了不同的结果,这是输出:
inner class is private (inspection): false
inner class is private (reflection): true
inner class is private (ASM): false
Run Code Online (Sandbox Code Playgroud)
有谁知道这里发生了什么?下面是复制问题的代码,我在Mac上使用了JRE build 1.8.0_05-b13来运行它.
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.Opcodes;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.lang.reflect.Modifier;
public class TestModifiers {
// this is the class to be tested
private class InnerClass {}
public static void main(String[] args) throws Exception {
// check whether class is private using inspection, and comparison with …Run Code Online (Sandbox Code Playgroud)