我在测验中遇到了这个问题,
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类型是不明确的"
我试图将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) 我已经定义:
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中得到了编译错误:
方法对于类型是不明确的
但正如你所看到的,这并不含糊.我能做什么?
在下面的代码中,我从最后一行的编译器得到一个错误:"类型列表是不明确的"(在尝试定义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",此符号后面的维度'.建议请.