在java中返回String的通用方法

时间:2014-08-10 16:42:35

标签: java generics

我正在尝试使用泛型方法返回String值

这是方法调用

System.out.printf("%s", impresionTabulada(arregloEntrada[i]),i);

这是方法

public static <E> String impresionTabulada(E elemento, int indx){
    if(indx%4==0)
        return String.format("%s\n", elemento);
    else
        return String.format("%s\t\t", elemento);
}

但编译器抛出此错误

  

&#34;描述资源路径位置类型方法   impresionTabulada(E,int)中的类型   EJERC18_6_PruebaMetodoGenerico_ImpresionTabulada不适用于   争论   (E)EJERC18_6_PruebaMetodoGenerico_ImpresionTabulada.java / 1 libro de   java D&amp; D / CAP18 / com / ejercDietel / Ejercicios第23行Java问题&#34;

我一直在研究这个问题,但我不知道我做错了什么。

提前致谢

2 个答案:

答案 0 :(得分:2)

您使用单个参数impresionTabulada(arregloEntrada[i])调用该方法,但您使用两个参数对其进行了定义。

我假设方法调用应该是:

System.out.printf("%s", impresionTabulada(arregloEntrada[i],i));

答案 1 :(得分:0)

impresionTabulada

的简化签名
String impresionTabulada(E, int)

它包含2个参数,第一个类型为E,第二个类型为int

impresionTabulada

的替代
// This is NOT code...this is just a substitution for later!
x = impresionTabulada(arregloEntrada[i]) // Take note that is only taking in 1 parameter - arregloEntrada[i]

因此...

你的printf表达式就是这个......

System.out.printf("%s", x, i);                                     // This `x` is from above
System.out.printf("%s", x                                   , i);  // This `x` is from above - expanded
System.out.printf("%s", impresionTabulada(arregloEntrada[i]), i);  // This is your bad code!

正如您所看到的,正是您的printf(...)函数将您想要的参数作为第二个impresionTabulada(...)参数。

解决方案

System.out.printf("%s", impresionTabulada(arregloEntrada[i], i) );