当对Unsafe中的其他原始类型使用Unsafe.getByte(byte[], long)Unsafe.putByte(long, byte[])或任何其他get / put方法时,我将得到NullPointerException。 这是代码段:

byte[] data = new byte[]{0, 0, 0, 0, 0};
long offset = 0;
Unsafe unsafe = getUnsafe();

public byte at(long index) {
    return unsafe.getByte(data, index + this.offset);
}

*所有字段均正确实例化。
*方法getUnsafe()将返回一个Unsafe类实例。

===============>>#1 票数:1

如果我尝试您的代码, Unsafe.getUnsafe()得到Unsafe.getUnsafe()java.lang.SecurityException 如果您以某种方式忽略了该异常, unsafe可能最终为null ,这可能是导致异常的原因。

如果我改为使用以下代码初始化unsafe

Unsafe unsafe = null;

try {
    Field field = sun.misc.Unsafe.class.getDeclaredField("theUnsafe");
    field.setAccessible(true);
    unsafe = (sun.misc.Unsafe) field.get(null);
} catch (Exception e) {
    throw new AssertionError(e);
}

一切正常,如果我将offset设置为16,我可以使用at(...)函数访问数组中的字节。也许尝试一下,看看是否有帮助。

但!!! (如@StephenC上面所述),您应避免使用此方法! 例如,您可能无法依赖应用于所有VM的特定offset值。 此外,在某些疯狂的情况下,某些VM甚至可能决定对数组中的字节进行字对齐,因此您需要将index递增4或8才能到达下一个字节(这是一个猜测)。 此功能可能非常难以预测。 我还怀疑它比仅使用data[index]快得多,因为您刚刚在代码中引入了方法调用。 如果需要速度,还请确保直接查看NIO ByteBuffers

  ask by Laxenade translate from so

未解决问题?本站智能推荐:

3回复

java线程“main”中的异常java.lang.NullPointerException [关闭]

我是Java的新手,刚刚尝试了zetcode.com的教程。 他正在他的教程中解释和展示如何创建一个简单的破砖游戏,我阅读他的教程并按照他的方式对游戏进行编程。 最后它没有工作。 错误是: javax.swing.ImageIcon。(ImageIcon.java:205)中的线
3回复

Java:带子串的NullPointerException [关闭]

我的一个方法有问题。 请记住,我正在大学学习Java,所以我可能无法快速处理简单的事情。 下面是一个添加表达式的方法。 我遇到的问题是x = x.substring.(1, x.length() - 1); 我得到的例外情况是: 我不知道这意味着什么和/或如何解决它。 如果你能
1回复

Java:从流中读取时如何避免NullPointerException? [关闭]

因此,我有一个此ObjectInputStream,大多数情况下将为null。 (它是用于聊天服务器的。)我认为这段代码将处理空条件。 (这是在它自己的线程中,因此它不会阻塞程序的其余部分。我重写的前一个解决方案是发送对象而不是字符串,该解决方案用于阻塞直到有问题为止。我正在寻找一种方法来类
3回复

线程“ main”中的异常java.lang.NullPointerException-Java错误[关闭]

运行代码时,出现以下错误: 线程“主”中的异常java.lang.NullPointerException 我认为这是因为我绘制了图形,但是以前从未发生过。 我不知道为什么。 这是我的代码:
1回复

Java练习分配中的NullPointerException

他是Java的初学者,我正在做一个需要拉汽车的练习。 我书中的代码不起作用,我也不知道为什么。 我不是一个完全了解Java的人,我知道类,对象,方法等。但是如果涉及到语法的确切行为,我仍然是nooby。 这是代码: 我的书说它必须起作用,但是蚀说: 我不明白为什么!
1回复

带有Redis的Spring应用程序中的线程“ main”中的异常java.lang.NullPointerException

我有一个带Redis的Java应用程序,它引发了异常。 这是课程。 主班: ApplicationConfig: 操作数据: 例外: 那是什么 我不知道。 顺便说一下,我正在使用弹簧
3回复

自定义异常中的Java异常NullPointerException

今天我不知何故遇到了一个错误,我正试图复制它。 我相信下面的代码将抛出NullPointerException,因为ep未实例化,但是我无法对其进行仿真。 我相信当从主体抛出异常时,实例变量ep为null。 但是运行它不会显示NullPointerException。 引发异
1回复

带有Android 10的小米上TextInputLayout中的NullPointerException

我最近开始在Android应用中使用TextInputLayout 。 之后,奇怪的NullPointerException错误开始出现。 这些错误仅在装有Androind 10 Xiaomi设备上发生。 无法重现该错误(我没有小米设备)。 在Internet上搜索时发现,尝试在TextInpu
3回复

尝试打印数组时Java中的NullPointerException

事实是,我正在尝试打印先前在构造函数中创建的矩阵,但似乎它是空的。 这是构造函数的代码: 并打印该方法的代码: 问候!
1回复

读取文件时Java代码中的NullPointerException

我有一个读取的文本文件: 约翰·史密斯 乔治布什 随便的人 第四名 当我在程序中的名为customerData.txt的文本文件中调用此数据并将名称分配给2d数组中的单元格时,出现了nullPoint错误,并且不知道如何解决此问题。 谢谢!