Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java省略类接口中获取封装数据? 我只玩java,因为我的背景主要是C++,所以我的问题对于专业java开发者来说可能有点奇怪。_Java_Encapsulation - Fatal编程技术网

如何在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在处理数千像素的同时,可以节省更多的处理器时间。