我有以下代码:
if(prevPoint != null){
Log.i("tracking class", "prevPoint: "+ prevPoint);
Point pointb = null;
Projection projection2 = mapView.getProjection();
projection2.toPixels(prevPoint, pointb);
Log.i("tracking class", "Pointb: "+ pointb);
Paint paint;
paint = new Paint();
paint.setColor(Color.BLUE);
paint.setAntiAlias(true);
paint.setStyle(Style.STROKE);
paint.setStrokeWidth(2);
Log.i("tracking class", "Point x: "+ point.x);
Log.i("tracking class", "Point y: "+ point.y);
Log.i("tracking class", "Pointb x: "+ pointb.x);
Log.i("tracking class", "Pointb y: "+ pointb.y);
//canvas.drawLine(pointb.x, pointb.y, point.x, point.y, paint);
}
日志返回以下内容:
10-19 08:55:25.505: INFO/tracking class(29970): prevPoint: 41310173,-105558377
10-19 08:55:25.505: INFO/tracking class(29970): Pointb: null
有没有想过为什么Pointb会返回null?
发布于 2011-10-19 23:14:07
你期望Java使用pass by reference吗?虽然引用类型的任何表达式的值都是引用,但它在任何地方都使用传递值。
呼叫
projection2.toPixels(prevPoint, pointb);
无法更改pointb
的值。你需要使用赋值运算符,例如
Point pointb = projection2.toPixels(prevPoint, null);
我相信toPixels
会更改参数所引用的现有对象的内容,如果参数为非空...但是它不可能改变变量的值来引用新的对象。
https://stackoverflow.com/questions/7823522
复制相似问题