如何在Java省略类接口中获取封装数据? 我只玩java,因为我的背景主要是C++,所以我的问题对于专业java开发者来说可能有点奇怪。
假设我们有一个如何在Java省略类接口中获取封装数据? 我只玩java,因为我的背景主要是C++,所以我的问题对于专业java开发者来说可能有点奇怪。,java,encapsulation,Java,Encapsulation,假设我们有一个Bitmap类,其中填充了一些我们想要读取的像素。当然,第一个最好的解决方案是getPixel方法,但它会对每个像素进行一些不必要的检查,因此工作有点慢。我们可以使用getPixels,但它会将位图数据复制到原来的两倍,而且目标设备上没有太多的空闲内存。更不用说,复制仍然需要时间 在Java中是否有一些方法可以忽略接口来获取对象字段 Java提供了一种方便的工具,用于编写动态程序,称为。C++中最接近的是,但反射更复杂。除此之外,它还允许您访问对象的私有字段 假设第三方位图如下所示
Bitmap
类,其中填充了一些我们想要读取的像素。当然,第一个最好的解决方案是getPixel
方法,但它会对每个像素进行一些不必要的检查,因此工作有点慢。我们可以使用getPixels
,但它会将位图数据复制到原来的两倍,而且目标设备上没有太多的空闲内存。更不用说,复制仍然需要时间
在Java中是否有一些方法可以忽略接口来获取对象字段 Java提供了一种方便的工具,用于编写动态程序,称为。C++中最接近的是,但反射更复杂。除此之外,它还允许您访问对象的私有字段 假设第三方
位图
如下所示:
class Bitmap {
private byte[] rawData;
private int rows;
private int cols;
public int getPixel(int x, int y) {
if (x < 0 || x >= cols || y < 0 || y >= rows) {
throw new ...
}
int offset = 3*(rows*y + x);
return (rawData[offset] << 16)
| (rawData[offset+1] << 8)
| rawData[offset+2];
}
}
类位图{
私有字节[]原始数据;
私有int行;
私人公司;
公共整数getPixel(整数x,整数y){
if(x<0 | | x>=cols | | y<0 | | y>=行){
扔新的。。。
}
int offset=3*(行*y+x);
返回(原始数据[偏移量]我唯一想到的是使用反射
,但这可能比使用访问器方法效率更低。打破那些代码不属于你的类的封装的唯一方法是反射。实际上,这可能行得通!我只需要获得一次像素的引用。这个操作本身可能很慢,但我会d在处理数千像素的同时,可以节省更多的处理器时间。