相关疑难解决方法(0)

当参数是文字空值时,如何选择重载方法?

我在测验中遇到了这个问题,

public class MoneyCalc {

   public void method(Object o) {
      System.out.println("Object Verion");
   }

   public void method(String s) {
      System.out.println("String Version");
   }

   public static void main(String args[]) {
      MoneyCalc question = new MoneyCalc();
      question.method(null);
   }
}
Run Code Online (Sandbox Code Playgroud)

该程序的输出是"String Version".但是我无法理解为什么将null传递给重载方法会选择字符串版本.null是一个String变量,指向什么?

但是当代码更改为时,

public class MoneyCalc {

   public void method(StringBuffer sb) {
      System.out.println("StringBuffer Verion");
   }

   public void method(String s) {
      System.out.println("String Version");
   }

   public static void main(String args[]) {
      MoneyCalc question = new MoneyCalc();
      question.method(null);
   }
}
Run Code Online (Sandbox Code Playgroud)

它给出了一个编译错误,说"方法方法(StringBuffer)对于MoneyCalc类型是不明确的"

java overloading

97
推荐指数
2
解决办法
1万
查看次数

无法将null传递给execute(); android 4.0中的AsyncTask方法

我试图将null值传递给execute(); 在android 4.0中AsyncTask的方法它显示错误"方法执行(Integer [])对于类型"是不明确的"但相同的代码与android 2.2代码工作正常代码是:

public class AllianceAnalysisDemoActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    new AsynPageLoader().execute(null);
}


public class AsynPageLoader extends AsyncTask<Integer, Integer, Bitmap> {

    @Override
    protected void onPreExecute() {
        // progressBar.setVisibility(VISIBLE);
    }

    @Override
    protected Bitmap doInBackground(Integer... params) {

        return null;
    }

    @Override
    protected void onPostExecute(Bitmap result) {
        if (result != null && result.getHeight() > 0
                && result.getWidth() > 0) {

        }else {

        }
    }

} …
Run Code Online (Sandbox Code Playgroud)

null android android-asynctask

16
推荐指数
1
解决办法
7344
查看次数

"方法对于类型是不明确的"但是类型不是模糊的(错误来自从Eclipse 3.7.2升级到eclipse 4.2)

我已经定义:

public static int[] getArray( final int... params ) {
    return params;
}
public static <T> T[] getArray( final T... params ) {
    return params;
}
Run Code Online (Sandbox Code Playgroud)

我用这个

getArray( 1, 2 )
Run Code Online (Sandbox Code Playgroud)

现在我在eclipse 4.2中得到了编译错误:

方法对于类型是不明确的

但正如你所看到的,这并不含糊.我能做什么?

java eclipse compiler-construction

15
推荐指数
2
解决办法
2万
查看次数

Java中的"模糊类型"错误是什么?

在下面的代码中,我从最后一行的编译器得到一个错误:"类型列表是不明确的"(在尝试定义cgxHist列表的行上).我究竟做错了什么?

import java.awt.*;
import javax.swing.*;
import java.util.*;

public class drawr extends JPanel{

    public static int animationSpeed=470;
    public static int diameter = 50;
    hBod allHBods[];
    List<String> cgxHist = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

我实际上希望列表包含整数,但是当我尝试"强制转换"列表时,通过替换<String><int>,该行上的错误变为"令牌上的语法错误"int",此符号后面的维度'.建议请.

java list ambiguous

7
推荐指数
2
解决办法
1万
查看次数