0

是否可以在创建对象时声明方法?我在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 接口相关?

谢谢你的帮助!

4

2 回答 2

1

是的,你可以这么做。它被称为匿名类。这意味着您正在方法内创建一个新类,但您没有给它一个名称(这就是它是匿名的原因)。在您的示例中,这个匿名类实现了Comparator<String>接口,它应该compare在其主体中定义方法。这就是代码有效的原因。

于 2012-10-19T03:28:55.063 回答
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.
于 2012-10-19T03:30:13.277 回答