i**p 发帖数: 902 | 1 As I know, the Java Interface can not be used to define objects. But this
example is from a book.
How can we use an interface DotsChangeListener to define dotsChangeListener?
private DotsChangeListener dotsChangeListener;
/** A list of dots. */
public class Dots {
/** DotChangeListener. */
public interface DotsChangeListener {
/** @param dots the dots that changed. */
void onDotsChange(Dots dots);
}
private final LinkedList dots = new LinkedList();
private final List safeDots = Collections.unmodifiableList(dots);
private DotsChangeListener dotsChangeListener;
/** @param l the new change listener. */
public void setDotsChangeListener(DotsChangeListener l) {
dotsChangeListener = l;
}
/** @return the most recently added dot, or null. */
public Dot getLastDot() {
return (dots.size() <= 0) ? null : dots.getLast();
}
/** @return the list of dots. */
public List getDots() { return safeDots; }
/**
* @param x dot horizontal coordinate.
* @param y dot vertical coordinate.
* @param color dot color.
* @param diameter dot size.
*/
public void addDot(float x, float y, int color, int diameter) {
dots.add(new Dot(x, y, color, diameter));
notifyListener();
}
/** Delete all the dots. */
public void clearDots() {
dots.clear();
notifyListener();
}
private void notifyListener() {
if (null != dotsChangeListener) {
dotsChangeListener.onDotsChange(this);
}
}
} | g*****g 发帖数: 34805 | 2 It's not an instantiation, it's only a declaration.
The instantiation is coming from outside the class and passed in the setter.
dotsChangeListener?
【在 i**p 的大作中提到】 : As I know, the Java Interface can not be used to define objects. But this : example is from a book. : How can we use an interface DotsChangeListener to define dotsChangeListener? : private DotsChangeListener dotsChangeListener; : /** A list of dots. */ : public class Dots { : /** DotChangeListener. */ : public interface DotsChangeListener { : /** @param dots the dots that changed. */ : void onDotsChange(Dots dots);
|
|