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

Java:方法返回类型为数组错误,java,arrays,type-conversion,Java,Arrays,Type Conversion,为什么即使ProvinceTerritory和names都是数据类型arrays,返回类型仍给出错误? “不兼容的类型:java.lang.String[]无法转换为ProvinceTerritory[]”java是一种语言 您不能指定返回值ProvinceTerritory[],然后返回字符串[]。它们是两种不同的类型 如果您感兴趣,您可以通过以下线索了解更多有关该主题的信息: Java是一种语言 您不能指定返回值ProvinceTerritory[],然后返回字符串[]。它们是两种不同的类

为什么即使
ProvinceTerritory
names
都是数据类型
arrays
,返回类型仍给出错误?
“不兼容的类型:java.lang.String[]无法转换为ProvinceTerritory[]”

java是一种语言

您不能指定返回值
ProvinceTerritory[]
,然后返回字符串[]。它们是两种不同的类型

如果您感兴趣,您可以通过以下线索了解更多有关该主题的信息:

Java是一种语言

您不能指定返回值
ProvinceTerritory[]
,然后返回字符串[]。它们是两种不同的类型

如果您感兴趣,您可以通过以下线索了解更多有关该主题的信息:


它们都是数组。但它们是不同类型的数组。因此,您无法为
ProvinceTery[]
传递
字符串[]

更改方法的返回类型

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
}
更新

如果您想返回
ProvinceTeritory[]
,则可以执行以下操作

public String[] getProvinceWhoseNameContains

它们都是数组。但它们是不同类型的数组。因此,您无法为
ProvinceTery[]
传递
字符串[]

更改方法的返回类型

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
}
更新

如果您想返回
ProvinceTeritory[]
,则可以执行以下操作

public String[] getProvinceWhoseNameContains

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


希望这能有所帮助。

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


希望这有帮助。

省域和字符串不是同一类型的。

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

ProvinceTerritory和String不是同一类型的

两者都来自完全不同的层次结构。
所以
将返回类型更改为字符串[],或者创建一个ProvinceTerritory数组。

您的返回类型不是字符串数组,它应该是公共字符串[]getProvinceWhoseNameContains(字符串子字符串)。ProvinceTerritory[]不是字符串数组。因此,如果我想保持方法签名的原样,例如:public ProvinceTerritory[]getProvinceWhoseNameContains(String substring){},那么我应该对方法体进行哪些更改?返回类型不是字符串数组,它应该是public String[]getProvinceWhoseNameContains(String substring).ProvinceTerritory[]不是字符串数组。因此,如果我想保持方法签名的原样,例如:public ProvinceTerritory[]getProvinceWhoseNameContains(String substring){},那么我应该对方法体做什么更改?如果我不想更改方法签名并将其作为ProvinceTerritory[],那么我如何以这种方式返回名称呢?然后,代替字符串[]创建一个ProvisioCeterritorry[]并返回该名称..在循环中生成此数组而不是获取名称OK,我将其更改为以下内容:public ProvinceTerritory[]getProvinceWhoseNameContains(字符串子字符串){ProvinceTerritory[]names;names=new ProvinceTerritory[13];for(ProvinceTerritory ptt:provinces){if(ptt.getName().contains(substring)){System.out.println(names.);}}返回名称;}这一个正在运行,但它没有给我正确的povinces名称,它打印出来像“[lprovanceterritory;@13fbf44”你知道为什么吗?很抱歉,我不知道如何在注释中添加代码。是的,public ProvinceTerritory[]getprovincewhosenNamecontains(字符串子字符串){ProvinceTerritory[]names=new ProvinceTerritory[13];例如(ProvinceTerritory ptt:provinces){if(ptt.getName().contains(substring)){System.out.println(names.);}}}返回名称;}这一个正在运行,但它没有给我正确的povinces名称,如果我不想更改methods签名并将其保留为ProvinceTerritory[]的话,它会像“[lpprovinceTerritory;@13fbf44”一样打印出来,那么我如何以这种方式返回名称呢?然后,代替字符串[]创建一个ProvisioCeterritorry[]并返回该名称..在循环中生成此数组而不是获取名称OK,我将其更改为以下内容:public ProvinceTerritory[]getProvinceWhoseNameContains(字符串子字符串){ProvinceTerritory[]names;names=new ProvinceTerritory[13];for(ProvinceTerritory ptt:provinces){if(ptt.getName().contains(substring)){System.out.println(names.);}}返回名称;}这一个正在运行,但它没有给我正确的povinces名称,它打印出来像“[lprovanceterritory;@13fbf44”你知道为什么吗?很抱歉,我不知道如何在注释中添加代码。是的,public ProvinceTerritory[]getprovincewhosenNamecontains(字符串子字符串){ProvinceTerritory[]names=new ProvinceTerritory[13];例如(ProvinceTerritory ptt:provinces){if(ptt.getName().contains(substring)){System.out.println(names.);}}}}返回名称;}这个正在运行,但它没有给我正确的povinces名称,它像“[lproviceTerritory;@13fbf44”一样打印