2013-06-15 1 views
0

Если функция возвращает 2 значения, например: min/max в массиве или, например, x и y оси точки, ему нужно будет создать объект, поскольку функция не может вернуть 2 значения ,Когда использовать вложенный класс

Теперь рассмотрим клиента, чья «единственная» функция заключается в использовании геттеров в возвращаемом объекте и печати. И Возвращаемый объект сказать MinMax или точка объекта создается только один класс,

Должны ли мы использовать вложенный класс (например: MinMax, точка может быть вложен класс) или использовать верхний класс уровня?

Это общий вопрос. Ниже приведен только один пример, связанный с вопросом. Просьба сделать ответ, связанный с образцом кода, поскольку это очень общий вопрос, не связанный с образцом кода.

Должен ли класс Point быть внутренним классом, похожим на способ возвращения itr ararylist?

class Point { 
    private final int x; 
    private final int y; 

    public Point(int x, int y) { 
     this.x = x; 
     this.y = y; 
    } 

    int getX() { 
     return x; 
    } 

    int getY() { 
     return y; 
    } 
} 

public class IntersectionOf2Lines { 

    public static Point calculateIntersection(Line line1, Line line2) { 
     int x = (line2.getConstant() - line1.getConstant())/(line1.getSlope() - line2.getSlope()); 
     int y = line1.getSlope() * x + line1.getConstant(); 

     return new Point(x, y); 
    } 


Line line3 = new Line(2, 2); 
     Line line4 = new Line(3, 2); 

     Point p1 = IntersectionOf2Lines.calculateIntersection(line3, line4); 
     System.out.println("Expected: x = 0, Actual x = " + p1.getX() + " Expected y=2, Actual y = " + p1.getY()); 
+0

Пожалуйста, выберите [http://tackoverflow.com/posts/17128389/edit] [ваш предыдущий вопрос] (http://stackoverflow.com/questions/17128389/when-to-use-nested-class) с этой информацией, вместо этого создавая новую. – Pshemo

+0

Обратите внимание, что если вам нужно вернуть tp несколько элементов в виде, вы можете вернуть список или массив. –

+0

Извините, новичок в переполнении стека. спасибо за указание – JavaDeveloper

ответ

2

ИМХО это вопрос стиля. Я бы посмотрел на это с точки зрения того, кто читает ваш код с первого раза. Какие классы вы хотите сделать очевидными, а какие из них вы хотите группировать, и им нужно только читать, когда они вникают в детали.

BTW: Вложенный класс должен быть вложен в область действия другого класса, а не только в том же файле класса, что и в вашем примере.

+0

Точка не является вложенным классом .. мой вопрос: должен ли он быть вложенным классом, который может быть возвращен так же, как Iterator возвращается классами Util? – JavaDeveloper

+0

Это должно быть, если вы считаете, что это более «естественный» способ написать/прочитать код, и он не будет существовать, за исключением того, что ему нужен внешний класс. Если вы чувствуете, что класс стоит сам по себе, сделайте его собственным файлом класса. –