Java和Android中的包范围访问

Java和Android中的包范围访问,java,android,Java,Android,我注意到Java和Android中包作用域的奇怪行为 我已经在我的项目中创建了包“java.util.concurrent” 接下来,我在刚刚创建的包中添加了类TestClass package java.util.concurrent; public class TestClass { public void testMethod() { ArrayBlockingQueue s = new ArrayBlockingQueue(1); // I can

我注意到Java和Android中包作用域的奇怪行为

  • 我已经在我的项目中创建了包“java.util.concurrent”
  • 接下来,我在刚刚创建的包中添加了类TestClass

    package java.util.concurrent;
    
    public class TestClass {
    
       public void testMethod() {
    
           ArrayBlockingQueue s = new ArrayBlockingQueue(1);
           // I can use items field.
           Object[] items = s.items;
    
       }
    
    }
    
  • ArrayBlockingQueue类的字段项具有最终包作用域

    public class ArrayBlockingQueue<E> extends AbstractQueue<E>
            implements BlockingQueue<E>, java.io.Serializable {
    
    
        ....                
    
        /** The queued items */
        final Object[] items;
    
        ....
    
    }
    
    公共类ArrayBlockingQueue扩展了AbstractQueue
    实现BlockingQueue,java.io.Serializable{
    ....                
    /**排队的项目*/
    最终目标[]项;
    ....
    }
    
  • 接下来,当我试图用常用的Java项目(Java1.8.6x)编译TestClass时。我成功了,这是合乎逻辑的

    但Android项目中的同一个类返回编译时错误。原因是“我的类无法访问此字段”

    你有什么想法吗

    更新

    下面的屏幕显示Android版本和队列类代码


    看起来,
    ArrayBlockingQueue
    的Android版本与Java版本不同。在Android中,
    是。这就解释了为什么它超出了范围。您可以解决这个问题,通过反射您可以(不确定最终版私有版)

    从哪里访问它?在这两种情况下都来自同一个软件包?安卓的哪个版本?我添加了屏幕。版本API是凯文的权利。例如:openjdk将项定义为:
    private final E[]项