比较器被称为对象和接口

时间:2018-05-28 08:00:11

标签: java import interface comparator

我意识到不理解这可能会在我对Java的理解中表现出更深层次的问题,但在检查java se文档时,它确实表明Comparator是一个接口。然后,当我创建一个'比较器'对象,我只能这样做,因为我导入了java.util.Comparator。

但是鉴于接口没有定义方法和接口没有构造函数(或者它们是??),我如何实例化比较器对象?定义的方法来自哪里?

1 个答案:

答案 0 :(得分:0)

java.uti.Comparator是一个接口。接口无法实例化 - 它们只能由类实现或由其他接口扩展。

如果一个类声称实现了一个接口,那么该接口定义的所有方法必须出现在它的源代码中才能成功编译类。

对于给定的Type T(T是需要比较的对象的类类型),与任何其他对象实例化不同,通常,实例化实现比较器的匿名类,而不是接口本身。这就像任何其他对象及其类型比较器一样,因此可以作为参数传递给Collections.sort或Arrays.sort方法。

import datetime

def create_url(check_in):
    """take date such as '2018-06-05' and transform to format '06%2F05%2F2018'"""
    _check_in = check_in.strftime("%Y-%m-%d")
    _check_in = _check_in.split("-")
    _check_in = _check_in[1] + "%2F" + _check_in[2] + "%2F" + _check_in[0]

    return "https://www.website.com/?arrival={0}".format(_check_in)

today = datetime.date.today()
print(create_url(today))

>>> https://www.website.com/?arrival=05%2F28%2F2018