有没有办法在我们自己的程序中访问String常量池的内容?
假设我有一些基本代码可以做到这一点:
String str1 = "foo";
String str2 = "bar";
Run Code Online (Sandbox Code Playgroud)
现在我们的String常量池中有两个字符串浮动.有没有办法访问池并打印出上述值或获取池中当前包含的当前元素总数?
即
StringConstantPool pool = new StringConstantPool();
System.out.println(pool.getSize()); // etc
Run Code Online (Sandbox Code Playgroud) 我意识到我应该只在我们想要直接在shell中运行的脚本中包含shebang行.我也没有在本地安装的任何大模块包中看到shebang行.
但是,如果人们可能因为我还没有意识到的其他原因而将其包括在内,我仍然很好奇.或者,如果可能存在类似(例如)〜'历史'的原因来包含它.或者,因为害怕我的房子爆炸,所以shebang线是否永远不会被包含在.pm文件(期间)中?
在构建新分发时,会生成2个元文件.一个使用YAML格式,另一个使用JSON.据我所知,这些仅供其他CPAN客户端或其他想要访问元文件的应用程序使用(无论出于何种原因).我试图解释为什么一个应用程序需要访问这两个...
这两种格式是否仅为方便起见而单独生成?即开发人员1更喜欢JSON,因此编码他的应用程序来阅读分发META.json文件,而开发人员2讨厌JSON,而宁愿达到YAML版本?
或者是因为我忽视的单个客户端/应用程序需要两个技术原因?
我声明并分配一些字节数组.我想用read(字节数组,偏移量,字节长度)方法初始化这些数组.第一个读取方法语句似乎正确地将前32个字节读入数组.但是,第二个读取方法不会抛出indexOutOfBounds异常.
偏移值的规范:
offset 0, length 32 bytes - contains some text
offset 32, length 2 bytes - contains something else
etc
Run Code Online (Sandbox Code Playgroud)
这是代码:
File file = new File("somebinaryfile.dat");
DataInputStream in = new DataInputStream(new FileInputStream(file));
byte[] array1 = new byte[32]; // first array
byte[] array2 = new byte[2]; // second array
in.read(array1, 0, 32);
in.read(array2, 32, 2);
in.close();
Run Code Online (Sandbox Code Playgroud)
我正在假设(可能不正确)在每个新的.read()方法语句中读取位置将自动增加.然而,如果我将34个元素分配给array2而不是仅仅2个元素,则不会抛出任何异常.因此,看起来前34个字节被读入array2而不是最后2个字节,即使我指定了偏移和字节长度......
我意识到RandomAccessFile类有一个漂亮的.seek(n)方法.但是,我很顽固,并希望坚持使用DataInputStream.
关于正确使用的任何建议,以便使用指定的偏移量和字节长度获得的数据初始化两个数组?