Note that there are some explanatory texts on larger screens.

plurals
  1. POJava compile-time error: Compiler not recognizing method override
    primarykey
    data
    text
    <p>I am working on modifying a fairly basic linked list implementation of a log in Java to use generics. My project has 3 .java files: </p> <ul> <li>GenericLogInterface.java -> Interface that defines the log</li> <li>LLGenericNode.java -> Class that defines the LL's nodes</li> <li>LinkedGenericLog.java -> Extension of interface that defines the LL</li> </ul> <p>Unfortunately, I am receiving a compile-time error from LinkedGenericLog.java:</p> <blockquote> <p>ch02/genericStringLogs/LinkedGenericLog.java:10: ch02.genericStringLogs.LinkedGenericLog is not abstract and does not override abstract method contains(java.lang.Object) in ch02.genericStringLogs.GenericLogInterface </p> </blockquote> <p>This would seemingly be easily solved by overriding the contains() method from GenericLogInterface.java in LinkedGenericLog.java. </p> <p>There is one huge hangup, however: I have already overridden it.</p> <p>Here is the source for the three .java files:</p> <p><strong>GenericLogInterface.java</strong></p> <pre><code>package ch02.genericStringLogs; public interface GenericLogInterface&lt;T&gt; { void insert(T element); // Precondition: This GenericLog is not full. // // Places element into this GenericLog. boolean isFull(); // Returns true if this GenericLog is full, otherwise returns false. int size(); // Returns the number of Strings in this GenericLog. boolean contains(T element); // Returns true if element is in this GenericLog, // otherwise returns false. // Ignores case differences when doing string comparison. void clear(); // Makes this GenericLog empty. String getName(); // Returns the name of this GenericLog. String toString(); // Returns a nicely formatted string representing this GenericLog. } </code></pre> <p><strong>LLGenericNode.java</strong></p> <pre><code>package ch02.genericStringLogs; public class LLGenericNode&lt;T&gt; { private T info; private LLGenericNode link; public LLGenericNode(T info) { this.info = info; link = null; } public void setInfo(T info) // Sets info of this LLGenericNode. { this.info = info; } public T getInfo() // Returns info of this LLGenericNode. { return info; } public void setLink(LLGenericNode link) // Sets link of this LLGenericNode. { this.link = link; } public LLGenericNode getLink() // Returns link of this LLGenericNode. { return link; } } </code></pre> <p><strong>LinkedGenericLog.java</strong></p> <pre><code>package ch02.genericStringLogs; public class LinkedGenericLog&lt;T&gt; implements GenericLogInterface { protected LLGenericNode log; // reference to first node of linked // list that holds the GenericLog items protected String name; // name of this GenericLog public LinkedGenericLog(String name) // Instantiates and returns a reference to an empty GenericLog object // with name "name". { log = null; this.name = name; } public void insert(T element) // Precondition: This GenericLog is not full. // // Places element into this GenericLog. { LLGenericNode newNode = new LLGenericNode(element); newNode.setLink(log); log = newNode; } public boolean isFull() // Returns true if this GenericLog is full, false otherwise. { return false; } public int size() // Returns the number of items in this GenericLog. { int count = 0; LLGenericNode node; node = log; while (node != null) { count++; node = node.getLink(); } return count; } public boolean contains(T element) // Returns true if element is in this GenericLog, // otherwise returns false. // Ignores case difference when doing comparison. { LLGenericNode node; node = log; while (node != null) { if (element.equals(node.getInfo())) // if they match return true; else node = node.getLink(); } return false; } public void clear() // Makes this GenericLog empty. { log = null; } public String getName() // Returns the name of this GenericLog. { return name; } public String toString() // Returns a nicely formatted string representing this GenericLog. { String logString = "Log: " + name + "\n\n"; LLGenericNode node; node = log; int count = 0; while (node != null) { count++; logString = logString + count + ". " + node.getInfo() + "\n"; node = node.getLink(); } return logString; } } </code></pre> <p>As you can clearly, see, I have overridden contains() in LinkedGenericLog.java Yet, the compiler still throws me this error. I am thinking it has to do with my use of generics in the argument of the contains() method, but I am new to generics and can't understand the problem.</p> <p>Can anyone help me?</p> <p>(Btw I am running java version "1.6.0_15" and compiling with the command line)</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload