Error message 'Cannot be resolved or is not a field'

Right now I'm studying the chain of responsibility design pattern and am using Eclipse.

And I'm trying to compile this code, but I have the compiling error "isLast cannot be resolved or is not a field":

public class OverFive implements Discount { private Discount next; // public boolean isLast = false; public void setNext(Discount next, boolean Last) { this.next = next; this.next.isLast = Last; // Here is the error. } public double DoDiscount(Budget budget) { if (budget.getValue() > 500) { return budget.getValue() * 0.10; } if (this.next.isLast == false) { return next.DoDiscount(budget); } else { return 0; } }
}

And now, here is the interface:

public interface Discount { double DoDiscount(Orcamento orcamento); void setNext(Discount next, boolean Last); }

2 Answers

Here's one recommendation: study the Sun Java coding standards and take them to heart. You're breaking them too frequently in this small code sample.

Java is case sensitive: "discount" is not the same as "Discount"; "dodiscount" is not the same as "DoDiscount".

public interface Discount { double doDiscount(Orcamento orcamento); void setNext(Desconto next, boolean last); void setLast(boolean last);
} 

And the implementation:

public class OverFive implements Discount { private Desconto next; private boolean last = false; public void setLast(boolean last) { this.last = last; } public void setNext(Desconto next, boolean last) { this.next = next; this.setLast(last); } // this method is utter rubbish. it won't compile. public double doDiscount(Orcamento budget){ if (budget.getValue() > 500){ return budget.getValue() * 0.10; }if (this.next.isLast == false){ return next.discount(budget); }else{ return 0; } }
}

I think this code is more than a little confusing. No wonder you're having problems.

6

I'm not sure if this is the same type of issue as the above, but I had the same error. In my case , I was using an older version of Eclipse that apparently didn't like having a class with same name as the package. I fixed the issue by giving the package a different name.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like