创建一个对象并同时定义方法

时间:2012-10-19 03:27:59

标签: java

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

感谢您的帮助!

2 个答案:

答案 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.