【问题标题】:getX() has private access in java.awt.Rectangle?getX() 在 java.awt.Rectangle 中有私有访问权限吗?
【发布时间】:2011-02-25 03:13:48
【问题描述】:

为什么下面的代码会产生错误信息:getX() has private access in java.awt.Rectangle (int)dest.getX(), (int)dest.getY(), (int)dest.getWidth(), (int)dest.getHeight()

根据文档,Rectangle 确实有一个公共方法 getX()

   public boolean setSize(java.awt.Rectangle source, java.awt.Rectangle dest)
{

    setVideoSize((int)source.getX() ,(int)source.getY(), (int)source.getWidth(), (int)source.getHeight(),
              (int)dest.getX(), (int)dest.getY(), (int)dest.getWidth(), (int)dest.getHeight()
     );


     return true;

}

【问题讨论】:

  • 哇,我以前从未见过。 Rectangle.getX() 始终是公开的,绝对没有充分的理由不编译。尝试使用 -verbose 选项运行 javac,并查看类路径中是否有任何不应该存在的内容。或许可以告诉我们您使用的是什么版本的 JDK。
  • 有趣的是它没有抱怨 source.getX(),只有 dest.getX()。并且那些其他方法不应显示在错误消息中。就好像括号有问题,但如果有我看不到。
  • @jcomeau_ictx:它也抱怨 dest.getX()。我只是简化了错误消息。

标签: java java-me phoneme


【解决方案1】:

我刚刚尝试了以下,它编译得很好。

public boolean setSize(java.awt.Rectangle source, java.awt.Rectangle dest) {

        setVideoSize((int) source.getX(), (int) source.getY(),
                (int) source.getWidth(), (int) source.getHeight(),
                (int) dest.getX(), (int) dest.getY(), (int) dest.getWidth(),
                (int) dest.getHeight());

        return true;

    }

    private void setVideoSize(int x, int y, int width, int height, int x2,
            int y2, int width2, int height2) {
        // TODO Auto-generated method stub

    }

【讨论】:

  • 嗨,我正在使用来自 PhoneMe 项目的包。检查源代码后,我发现 getX() 被声明为私有。不知道为什么,反正。
【解决方案2】:

getX() 在某些 java 规范中是私有的。例如,jsr-217 没有 getX() 有 public。检查您正在运行的 java 的规范。如果它是私有的,您可能可以直接访问数据成员。

http://docs.oracle.com/javame/config/cdc/ref-impl/pbp1.1.2/jsr217/index.html

【讨论】:

    【解决方案3】:

    pierr, getX() 适用于更有限的程序:

    
    jcomeau@intrepid:/tmp$ cat test.java; java test
    import java.awt.*;
    public class test {
     public static void main(String args[]) {
      Rectangle rect = new Rectangle(0, 0, 1, 1);
      System.out.println("x: " + rect.getX());
     }
    }
    x: 0.0
    

    不过,我不明白为什么你的会出错。

    【讨论】:

      猜你喜欢
      • 2013-10-27
      • 2023-03-23
      • 2014-11-24
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 2016-05-23
      • 2020-05-07
      相关资源
      最近更新 更多