Java:方法返回类型为数组错误

时间:2017-04-07 05:21:25

标签: java arrays type-conversion

public ProvinceTerritory[] getProvinceWhoseNameContains(String substring){
    String[] names;
    names = new String[13];
    int j=0;

    for(ProvinceTerritory ptt:provinces){
        if(ptt.getName().contains(substring)){
            String singleName=ptt.getName();
            names[j]= singleName;
            j++;
        }
    }
    return names;  \\this is where the error points to
}

为什么返回类型给出错误,即使ProvinceTerritorynames都是数据类型arrays"incompatible types:java.lang.String[] can not be converted to ProvinceTerritory[]"

4 个答案:

答案 0 :(得分:2)

Java是一种strongly typed语言。

您无法指定返回值ProvinceTerritory[],而是返回String []。它们有两种不同的类型。

如果您有兴趣,可以从这些主题中了解有关该主题的更多信息:

What are the key aspects of a strongly typed language?

What is the difference between a strongly typed language and a statically typed language?

答案 1 :(得分:0)

他们都是阵列。但它们是不同类型的阵列。因此,您无法将String[]传递给ProvinceTeritorry[]

更改您的方法的返回类型

public String[] getProvinceWhoseNameContains

<强>更新

如果您想返回Provinceteritorry[],那么您可以执行以下操作

public ProvinceTerritory[] getProvinceWhoseNameContains(String substring){
    ProvinceTerritory[] names = new ProvinceTerritory[13];
    int j=0;

    for(ProvinceTerritory ptt:provinces){
        if(ptt.getName().contains(substring)){
            names[j]= ptt;
            j++;
        }
    }
    return names;  
}

答案 2 :(得分:0)

string []和ProvinceTerritory []不同,确保需要返回哪种类型的函数。 如果需要ProvinceTerritory,则创建ProvinceTerritory的对象数组并返回ProvinceTerritory [],否则将函数返回类型更改为string []。

希望这有帮助。

答案 3 :(得分:0)

ProvinceTerritory和String的类型不同

两者都来自完全不同的层次结构 所以, 要么将返回类型更改为String [],要么创建“names”一个ProvinceTerritory数组。