Java: получение значения из массива из определенного места

У меня есть массив чисел, и я хотел бы получить одно из значений из местоположения «индекс». Я просмотрел документацию по Java http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html, но мой код все еще не компилируется.

вот мой метод:

public class ConvexPolygon implements Shape
{
    java.awt.Point[] vertices;

    public ConvexPolygon(java.awt.Point[] vertices) 
    {
        this.vertices = vertices;
        this.color = color;
        this.filled = filled;
    }

java.awt.Point getVertex(int index)
{  
    Point vertex;
    vertex =  get(Point vertices, int index);  
}

У меня есть числа в массиве, представляющем точки. Индекс значения будет расположением истинности массива. Что я могу сделать, чтобы это сработало? Спасибо !


person dukevin    schedule 27.01.2010    source источник


Ответы (3)


В Java индексы массива обозначаются квадратными скобками. Вы можете заменить свой вызов get(vertices, index) следующим образом:

  vertex = vertices[index];

Глядя на ваш код, кажется, что вы исходите из языка, который определяет глобальную функцию get() для таких операций. Имейте в виду, что в Java нет глобальных функций. Каждый создаваемый вами класс определяет свои собственные функции, и любой вызов функции без предшествующего ему объекта или класса считается определенным в локальном классе.

Итак, ваш вызов get(Point[], int) может работать, только если вы определите эту функцию в этом классе:

  public Point get(Point[] vertices, int index) {
     return vertices[index];
  }

Или определите его статически в другом классе и перед вызовом укажите имя класса:

public class PointArrayHelper {

  public static Point get(Point[] vertices, int index) {
    return vertices[index];
  }
}

PointArrayHelper.get(vertices, index);

Теперь имейте в виду, что я не думаю, что вам следует делать что-либо из этого! Я просто подумал, что это может помочь вам немного лучше понять Java.

person Benjamin Cox    schedule 27.01.2010

Я думаю, вы просто ищете:

 Point vertex = vertices[index];

По крайней мере, если вы не хотите этого, расскажите, в чем разница между использованием индекса массива и тем, что вы делаете :)

person Jon Skeet    schedule 27.01.2010
comment
Ладно, теперь я чувствую себя очень глупо. Я только что перешел от программирования на C, так что это должно было быть легко. Но для извлечения вещей в Java обычно требуется get, поэтому я думал об этом пути. Спасибо хоть! оно работает - person dukevin; 27.01.2010
comment
@Kevin: Да, Java немного странно обрабатывает массивы. К ним относятся очень по-особому - они не реализуют никаких интерфейсов и имеют дополнительный синтаксис. C# немного разумнее, поскольку вы можете определять индексаторы для ваших собственных типов, а массивы реализуют соответствующие интерфейсы, но они по-прежнему особенны во многих отношениях. - person Jon Skeet; 27.01.2010

Надеюсь, что это работает!

java.awt.Point getVertex(int index)
{  
    return vertices[index];
}
person craftsman    schedule 27.01.2010