getX() имеет частный доступ в java.awt.Rectangle?

Почему следующий код генерирует сообщение об ошибке: 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;

}

person pierrotlefou    schedule 25.02.2011    source источник
comment
Вау, я никогда раньше этого не видел. Rectangle.getX() всегда был общедоступным, и нет абсолютно никаких веских причин, по которым это не должно компилироваться. Попробуйте запустить javac с параметром -verbose и посмотрите, есть ли в пути к классам что-то, чего там быть не должно. И, возможно, расскажите нам, какую версию JDK вы используете.   -  person Mike Baranczak    schedule 25.02.2011
comment
интересно, что он не жалуется на source.getX(), только на dest.getX(). и эти другие методы не должны отображаться в сообщении об ошибке. это почти как если бы была проблема со скобками, но если и есть, то я ее не вижу.   -  person jcomeau_ictx    schedule 25.02.2011
comment
@jcomeau_ictx: он также жаловался на dest.getX(). Я просто упростил сообщение об ошибке.   -  person pierrotlefou    schedule 25.02.2011


Ответы (3)


Я только что попробовал следующее, и он отлично компилируется.

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

    }
person Bala R    schedule 25.02.2011
comment
Привет, я использую пакет из проекта PhoneMe. Проверив исходный код, я обнаружил, что getX() был объявлен как закрытый. Не знаю, почему, во всяком случае. - person pierrotlefou; 25.02.2011

getX() является закрытым в некоторых спецификациях java. Например, в jsr-217 getX() не имеет public. Проверьте спецификацию Java, которую вы используете. Если он частный, у вас может быть прямой доступ к элементу данных.

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

person goknicks    schedule 24.11.2011

пирр, 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

Однако я не понимаю, почему у вас ошибка.

person jcomeau_ictx    schedule 25.02.2011