2014-11-23 54 views
2

刚刚来自Haskell,我正在学习Java,我正在尝试设置一个小类来表示一个通用机器人。我想添加的一个实例变量是机器人位置的某种表示形式。我应该如何在Java中组织这些数据?

在Haskell,我刚才做类似:

type Point = (Float, Float) 
data Robot = Robot { position :: Point } 

但是,从我所知道的,Java没有任何这样的混淆,或元组,因此我不得不看这是另一种方式。

我以为只是创造名为Point的另一个类,并给它2个实例变量“X”和“Y”(或者,最好的东西多一点的描述),但似乎笨拙。我必须在它自己的文件中定义它(如果我正确记得每个类都在一个单独的文件中),并且它只有几行(除非我需要添加功能,比如“运动”)。

我的另一个想法是,只是这样做:

public class Robot { 
    ... 
    int xPos; 
    int yPos; 
    ... 

} 

这是混乱的,但更紧凑。

基本上,这可能是所有来概括:

它是典型的在Java中的一块大小的程序分离成吨的小块,不管?或者,如果再次使用的可能性很小,是否可以将它们组合在一起? (我知道理想情况下,所有事情都被视为将来可能被重复使用,并被切割成百万个子文件,但应该在多大程度上遵循这些要求;特别是在初始学习期间?)。

+0

一类就是在Java中的约定。你可以选择忽略它(或者使用内部类来解决这个问题)。 – Drux 2014-11-23 21:12:03

+2

已经有一个['Point'](https://docs.oracle.com/javase/7/docs/api/java/awt/Point.html)可以使用。但要回答你的主要问题,这主要是基于选项的,但我会说,如果一个Java程序不会被分成“一吨”较小的碎片,那么有些事情是错误的...... – 2014-11-23 21:12:12

+0

@Drux我试着在同一个文件中声明2个类,并且吐出一个错误(不能完全引用它,但基本上说“类x必须在它自己的文件中”)。除非在主类文件中只有这种情况。在鲍里斯,谢谢。我想我必须习惯这一点。 – Carcigenicate 2014-11-23 21:25:03

回答

2

答案是肯定的:)这是典型的看到自己的文件和其他一些功能,可能是一类自身的很小的类,但事实并非如此。

你也可以看到内部类在某种层次的组织代码的缘故。当你知道这个功能不会在外部使用时,大多数情况下会使用这些内部类,但是与代码的其他部分保持同一级别太多太不同。

我作为一个经验法则喜欢拖延新类的创建到一点时,我知道我需要它在其他地方,但我想这取决于程序的架构。

+0

谢谢。正是我在找的东西。我会查找“内部类”。你的最后一点可能是对我的调整。我习惯于先定义一个数据类型,然后是功能,然后将所有东西链接在一起,这通常运行良好。 – Carcigenicate 2014-11-23 21:28:26

+0

也可以使用术语“嵌套类”我猜...我不是英语母语... – 2014-11-23 21:33:49

+0

好的,谢谢.. – Carcigenicate 2014-11-23 22:34:39

0

无论哪种方式是好的,您可以执行。当我编写这样的代码时,我通常使用单类战略。

public class Robot { 
    ... 
    int x; 
    int y; 
    ... 
} 

但是,另辟蹊径并创建一个包装类也是没有错的。这取决于你的偏好。在这种特殊情况下,我会推荐使用内置的java.awt.Point类。回答一般问题:这两种实现都是可以接受的并且是常用的。每个文件

相关问题