2014-12-23 62 views
-3

我必须创建一个类别家庭编号。 housenumber由int和char组成。房子号将被分配到另一个人可以住的房子。测试对象是否只有在创建其他对象时是相同的

我想做什么:

当一个对象housenumber创建我想它来检查,如果它是另一个相同的一个或没有。但是只有当另一个对象被创建时。

我觉得可能是有用的:

所以每当一个对象被创建,我们运行的方法控制(); 该方法控制是一个布尔值,如果它们相同,应该返回true。 我知道.equals(对象)可以使用,但我不知道如何在那里得到一个对象。 可以说我创建了一个。它应该检查b是否被创建,但是因为没有hè返回一个真正的值并且可以创建该对象。如果我创建b。它会检查并找到存在。那么如果b!= a,它将返回一个假值,并且可以创建b。如果== B检查将返回false和B只是被设置成(指向同一个变量和东西)

我希望这不是太含糊

+3

颤音的替代代码,你将有更好的机会获得帮助。 –

+0

您可以重写.equals()方法来实现您的比较逻辑。请参阅:http://stackoverflow.com/a/185942/439716 –

+0

覆盖House中的.equals()以检查housenumber并将所有房屋对象放置在一组中。一组将不允许重复的对象。 – HoXa

回答

2

你想要做什么,是建立工厂为您的Housenumber对象。这样的工厂可以持有参考(例如List)到您将在运行时创建的每个Housenumber对象。这种工厂的create方法的实现应该采用通常传递给构造函数的参数,并且如果已经创建了与输入参数相同的输入参数(与我相等)的对象,而不是返回现有对象或创建新对象,并且否则将其添加到集合中。

0

你必须编写自己的实现来检查对象是否相等。问题是.equals()只检查两个指针​​是否指向同一个对象。

要创建的对象的情况下,你会做这样的事情:

HouseNumber hn1 = new HouseNumber(); 

并在此之后,如果你想对它们进行比较:

hn1.equals(hn2); //here you would have to override it with your own implementation 

这种实现是不是难。您将不得不检查charint是否匹配。

相关问题