创建对象时是否可以声明方法?我在java中遇到了以下几行代码:
public static void main(String[] args) {
Comparator<String> comparator = new Comparator<String>() {
public int compare (String s1, String s2) {
return s1.compareToIgnoreCase(s2);
}
};
}
在创建对象comparator
时看起来就是这样,代码正在添加一个实现Comparator<T>
接口的方法。在创建实例时是否总是可以添加其他方法,或者特别是与java接口相关的东西?
感谢您的帮助!
答案 0 :(得分:1)
是的,你可以这样做。它被称为Anonymous Class。这意味着你在方法中创建了一个新类,但你没有给它一个名字(这就是为什么它是匿名的)。在您的示例中,此匿名类实现Comparator<String>
接口,并且应在其正文中定义compare
方法。这就是代码运作的原因。
答案 1 :(得分:1)
这不是你想象的那样。
随后new Comparator<String>()
是一个匿名的内部类。这意味着匿名类是Comparator类的实现者。
你可以有两个选择:
1. AnyClass object = new AnyClass() { // anonymous inner class starts here.
// In this case , inner class is a sub class of AnyClass.
};// ends here
2. AnyInterface anyInterface = new AnyInterface() { //anonymous inner class starts here.
// In this case , inner class is implementer of AnyInterface.
}; // ends here.