如果给该方法使用相同的名称怎么办?

时间:2020-03-10 15:07:44

标签: java android

在下面的代码中,两个方法使用相同的名称命名,结果是什么?

还有一个问题,如何减少代码量?

public String getFileName(Uri uri) {
    String fileName = null;
    String scheme = uri.getScheme();

    if (scheme == null)
        return null;

    if (scheme.equals("file")) {
        return uri.getLastPathSegment();
    } else if (scheme.equals("content")) {
        Cursor cursor = mContext.getContentResolver().query(uri, null, null, null, null);

        if (cursor != null) {
            if (cursor.getCount() != 0) {
                int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DISPLAY_NAME);
                cursor.moveToFirst();
                fileName = cursor.getString(columnIndex);
            }
            cursor.close();
        }
    }

    return fileName;
}

public static String getFileName(String path) {
    if (path == null)
        return null;

    int index = path.lastIndexOf(PATH_SEPERATOR);
    return index < path.length() ? path.substring(index + 1) : null;
}

2 个答案:

答案 0 :(得分:1)

您在谈论方法,对吧?
因此,您在此处使用方法重载。只要您不对大量的重载方法感到困惑,就不会有任何后果。

方法重载是一项功能,如果一个类的参数列表不同,则它允许一个类拥有多个具有相同名称的方法。它类似于构造函数重载,它允许一个类具有一个以上具有不同参数列表的构造函数。

答案 1 :(得分:0)

正如Vitaly解释的那样,您正在那里重载方法。很好,因为两种方法的signature不同。
方法的签名由其name和其parameter types定义。

在您的示例中,您有

getFileName(Uri)

getFileName(String)

因此,编译器可以根据您提供的参数告诉您实际要调用的方法。

相关问题