Implement Equality And HashCode Method If Class Has Reference Type Members?
Jan 16, 2015
I am trying to implement the following example to override the equality and hashCode method if the class has reference type member. I do get the expected result "true" for equal and "false" for non-equal objects. But the print statement in the Circle's equal method is not executed when the objects values are not equal. I don't know what i am missing, though i get the equality result "false" as expected for non equal objects.
class Point{
private int x, y;
Point (int x, int y) {
this.x =x;
this.y = y;
I want to extend hashCode method in my class. As we know that hashCode is generating with 32 bit. Now I wanna generate 64-bit hashCode for user given Input.. Input may be string or Integer.
Please let me know.. take me out from this problem..
MY code follows like this...
package hash_table; public class Hash_table { private int num; private String data; public boolean equals(Object obj) { if(this == obj)
Why static member are allowed to be accessed with class-name and a null reference?
Here's the given code.
class Employee{ public static Integer companyId = 1001; // this could be private. public static Integer getCompanyId(){ return Employee.companyId; } //a setter method will be here if the companyId will be private. } public class TestStatic{ public static void main(String[] args){ Employee emp =null; emp.companyId = 11111; System.out.println(emp.getCompanyId()); } }
In this code the static members of a class are accessible by the null reference of that class.
These can also be access by the class (Employee.companyId or Employee.getCompanyId()).
What is the difference here in both. why a null reference can access these static members.
abstract class A class B extends A class C extends B class D extends C implements SomeInterface
I'm trying to implement a method "doSomething" declared in SomeInterface in class D. While trying to call doSomething in main I get the error message ”The method doSomething is undefined for the type B”
This is my code i main:
B container = new D("1,2,3,4,5,6,7,8"); System.out.println(container.doSomething());
I need container to be an object of type B, because it goes later into a list of type B. According to what I've been told, the only file I need to edit to make this work is class D.
I am trying to make a ChessBoard class composed of an array of JLabels inside a JPanel with a grid layout. I am also trying to override the getPreferredSize method so that the board will change size when I resize the main window (in another class in which I will instancize this class as part of a larger GUI). I got this kind of layout working before, but now I am trying to get it to work with multiple classes. However, after copying in the part of the previous code corresponding to the panel's layout, I am encountering some errors that I don't know how to solve. Specifically, when I try to override the getPreferredSize method, the compiler tells me "method does not override or implement a method from a super type, " and that it can't find the method "getPreferredSize"
Here's my code:
public class ChessBoard extends JPanel//the panel that this class extends is the boardHousing { //mental chess board piece array Piece mentalBoard[][] = new Piece[8][8]; //actual GUI chessboard JLabel Array static JLabel chessBoard[][] = new JLabel[8][8];
[Code] ....
I would just think that I was overriding the method incorrectly, but the weird thing is that I got that specific section of code to work before -- the only thing different now is that there are multiple classes, so my ChessBoard class itself is extending JPanel.
Okay, I am supposed to implement the functionalities of the Set class using a private data member of type ListReferencedBased<E>,how the ListReferenceBased works with what I am trying to accomplish.I am trying to complete Set.java, and I have barely started and much of the code doesn't work. ListReferenceBased was given to me completed.
import java.util.Iterator; pubic class ListReferenceBased<E> implements ListInterface<E>, Iterable<E>{ /** reference to the first element of the list */ private Node<E> head; /** number of items in list */ private int numItems;
I use this code in Restlet Representation. I try to get the value from the Request API. But I am facing the problem as "Cannot make a static reference to the non-static method getQuery() from the type Resource".
I am trying to implement this method in another class but I'm not sure how to do so. My attempt is:
public getCalls(){ return getCalls(); }
When I run the program it sends the following exception:
Exception in thread "main" java.lang.StackOverflowError at FibonacciForget.getCalls(FibonacciForget.java:14) and it highlights the [return getCalls();] part.
What is the correct way to implement the getCalls() method?
I have been researching the Iterator and making a class implement iterable. I have seen this example shown below and was wondering how I could change this so that iterable() is not called upon in the main. I would like to be able to make a method that returns an instance of a class that implements the Iterator interface hopefully an inner class. This is because my program will not have a main and will be supplied with a main that includes a new Object with will use the iterator method.
import java.util.*; public class IteratorDemo { public static void main(String args[]) { // Create an array list ArrayList al = new ArrayList(); // add elements to the array list al.add("C");
[Code] ....
This is all I have been able to understand from what I want to do. This does not work and this is what I am trying to achieve
public class MyArrayList implements Iterable { public static final int DEFAULT_SIZE = 5; public static final int EXPANSION = 5; private int capacity; private int size; private Object[] items;
I read this tutorial about overriding equal and hashcode method. [URL] ....
I understand how to override equal method, by overriding it, We can custom our compare. I also understand How to override hashcode, To make custom hash.
But still I can not understand why we do it? why if equal method override, we must override hashcode method too?If we don't what is the problem?
To honor the above contract we should always override hashCode() method whenever we override equals() method. If not, what will happen? If we use hashtables in our application, it will not behave as expected. As the hashCode is used in determining the equality of values stored, it will not return the right corresponding value for a key.
Is it the right reason in order to override:
Because when we customize equal method so it focus on special variables,We must change the hash code too in order to match with it, so hashcode also focus on those special variable.
I don't really know what this means and it is sending an error when I try to run my program I am trying to set the x and y value (Int x and int y) to setVisible false at a specific time in my game but it keeps sending the error that int is not a reference type.
When importing static members of a class. Why are they only accessible within the constructor of the calling class, and not outside of it? Here's the source code to understand my question.
package Certification; public class ExamQuestion { static public int marks ; static public void print(){ System.out.println(100);
This means that x is a reference to objects of type, "myType" and no memory has been set aside for an instance of this object. I think it's true that x also has the starting memory address of this object.
What I feel uncertain about is if x is telling the JVM(?) where it can find the starting address of this object, why do we care about the type that x is?
i.e., if we assign x to an object totally unrelated to this type then the compiler would complain - correct? If so, how come, since all x is doing is telling the JVM(?) where to find your object (via the address it contains).
I suppose all, hy a reference has a type associated with it if all the reference does is point you to the object?
When we say derived class that means copy of base class plus subclass specific implementations. But when it comes to private members it cannot be accessible in subclass scope. Does it mean byte code generated for subclass doesn't has byte code of private members of super class ?
public class Color { private int red; private int green; private int blue; public Color(){ red = 0; green = 0; blue = 0; }
And i have the Light class :
public class Light { private Color color1; private boolean switchedon;
public Light(int red, int green, int blue){ //dont know what to write here . how can i use the members of the Color class here ? without using extends. } }
I have a Homework that's on Polymorphism and inheritance. The problem is of a triangle class. The super class is GeometricObject and the subclass Triangle. I have the parent and child classes compiling, now it's the test program.
The problem is the examples in the book don't show anything about prompting input for objects. The objects in the Triangle class are: side1, side2, and side3 and so I created objects in the test: Triangle sideOne = new Triangle(); . I've tried to compile but jGrasp doesn't like anything I do and the instructor in my class hasn't shown us examples yet. Can I prompt input for reference type and not just primitive type?
Primitive arguments, such as an int or a double, are passed into methods by value. This means that any changes to the values of the parameters exist only within the scope of the method. When the method returns, the parameters are gone and any changes to them are lost.
Reference data type parameters, such as objects, are also passed into methods by value. This means that when the method returns, the passed-in reference still references the same object as before. However, the values of the object's fields can be changed in the method, if they have the proper access level.For example, consider a method in an arbitrary class that moves Circle objects:
public void moveCircle(Circle circle, int deltaX, int deltaY) { // code to move origin of // circle to x+deltaX, y+deltaY circle.setX(circle.getX() + deltaX); circle.setY(circle.getY() + deltaY);
// code to assign a new // reference to circle circle = new Circle(0, 0); }
Let the method be invoked with these arguments: moveCircle(myCircle, 23, 56)
Inside the method, circle initially refers to myCircle. The method changes the x and y coordinates of the object that circle references (i.e., myCircle) by 23 and 56, respectively. These changes will persist when the method returns. Then circle is assigned a reference to a new Circle object with x = y = 0. This reassignment has no permanence, however, because the reference was passed in by value and cannot change. Within the method, the object pointed to by circle has changed, but, when the method returns, myCircle still references the same Circle object as before the method was called.
If i have a class(lets say class name is Approval) with the following private members: String recip_id, Int accStat, String pDesc, String startDate How can i create public get and setter methods for these private members of the class?
public class CollisionManager<T> { private boolean collision = false; private T mainEntity; public <T extends Entities> void handleCollision(T mainEntity, T secondEntity){ this.mainEntity = mainEntity; // This is illegal. } }
Why "this.mainEntity = mainEntity" is incorrect and also show me the correct way to achieve this?
The error I am getting is "Type mismatch: cannot convert T to T"
I want to implement a kind of "container" in which to store objects (instances) of different types. Then with an iterator I'd call common methods. This is what I have in mind:
Where translate(x, y, z) is a method common for objects in Positionables which objects are of different types (Sphere, Box etc.).
Now I was thinking Positionables could be a List<Positionable> and Positionable is an abstract class and Sphere and Box extends from it. But I don't know how to propagate the call of translate() to the subclasses.
What are the best approaches for this matter? It would be perfect if I could make it so I could somehow use the "with" construction like in the example above.
I am trying to implement product method below which returns the set representing the Cartesian product of the current set and a given set (the Cartesian product contains all ordered pairs (a, b) where a belongs to the current set, and b belongs to the given set). The product should be a ListSet <Tuple<E>> object where each ordered pair is a Tuple element. (I have a Tuple class which implements an ordered tuple)
What am I trying to do in the product method : Make 2 for loop and inside the for loop make an array of <E> then set the 2 elements of the tuple then again set tuple and add it to arrayList. how to set 2 elements of the tuple and set tuple ??
public class ListSet<E> implements Iterable<E>{ SinglyLinkedList<E> sl; public ListSet(){ sl = new SinglyLinkedList<E>();