在本文中,我们将为您详细介绍我如何让@ParametersAreNonnullByDefault工作?的相关知识,并且为您解答关于parameter怎么用的疑问,此外,我们还会提供一些关于##ENGI
在本文中,我们将为您详细介绍我如何让@ParametersAreNonnullByDefault工作?的相关知识,并且为您解答关于parameter怎么用的疑问,此外,我们还会提供一些关于##ENGINE=MYISAM AUTO_INCREMENT=30 DEFAULT CHARSET=utf8、android – DefaultClusterRenderer getMarker()在缩放时返回null、android – 目标主机不能为null或在parameters.scheme = null,host = null中设置、Can''t bind multiple parameters (''header'' and ''parameters'') to the request''...的有用信息。
本文目录一览:- 我如何让@ParametersAreNonnullByDefault工作?(parameter怎么用)
- ##ENGINE=MYISAM AUTO_INCREMENT=30 DEFAULT CHARSET=utf8
- android – DefaultClusterRenderer getMarker()在缩放时返回null
- android – 目标主机不能为null或在parameters.scheme = null,host = null中设置
- Can''t bind multiple parameters (''header'' and ''parameters'') to the request''...
我如何让@ParametersAreNonnullByDefault工作?(parameter怎么用)
我已经做了几次尝试,以使包注释@ParametersAreNonnullByDefault在maven项目中为我工作,但没有成功。有人可以共享一个指向最小/示例maven项目的链接吗(或发布了pom.xml和package-
info.java和demo类)?
我说的是让findbugs处理器为我实施它。
答案1
小编典典如何申请
@ParametersAreNonnullByDefault
package-info.java
在您的程序包中创建一个文件,以在其中强制执行所需的行为。
在该文件中,执行以下操作:
/** * You should do it like this! */@ParametersAreNonnullByDefaultpackage com.stackoverflow;import javax.annotation.ParametersAreNonnullByDefault;
如何 不 申请@ParametersAreNonnullByDefault
不要在Java源文件中执行以下操作:
/** * But you shouldn''t do it this way! */@ParametersAreNonnullByDefaultpackage com.stackoverflow;import javax.annotation.ParametersAreNonnullByDefault;public class Answer { ...
像这样声明注释是不明确的。
笔记
可以直接在Answer
类上应用注释。
package com.stackoverflow;import javax.annotation.ParametersAreNonnullByDefault;/** * You can do it like this also. */@ParametersAreNonnullByDefaultpublic class Answer { ...
完全相同的情况@ParametersAreNullableByDefault
也适用。
##ENGINE=MYISAM AUTO_INCREMENT=30 DEFAULT CHARSET=utf8
ENGINE=MYISAM AUTO_INCREMENT=30 DEFAULT CHARSET=utf8代表什么含义呢?
刚开始的我也不知道什么意思?我说去看看别人的解释,也许就能知道了,可是看了好多版本的,都不一样,所以决定还是自己实践下
CREATE TABLE `dept_inf`(
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) DEFAULT NULL,
`remark` VARCHAR(300) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MYISAM AUTO_INCREMENT=30 DEFAULT CHARSET=utf8;
可以看到我们上面已经加了,那么后面会有什么影响呢?
我添加了两条数据,主键设置为null,让他自动识别
INSERT INTO `dept_inf` VALUES (NULL, "技术部", "技术部");
INSERT INTO `dept_inf` VALUES (NULL, "财务部", "财务部");
可以看到上传的数据直接从30开始,然后自动增长.
android – DefaultClusterRenderer getMarker()在缩放时返回null
@Override onClusterClick(Cluster<MyObject> cluster) { Marker marker = renderer.getMarker(cluster); marker.setIcon(....); }
对于一种情况,这很好用:当我放大或缩小时,簇标记的数量不会改变.例如,如果我有一个15集群和一个5集群,然后放大或缩小一个级别,保留相同的两个集群.现在单击其中一个renderer.getMarker(cluster)将返回null.如果它们在缩放后重新聚类,则getMarker不为null.
我的DefaultClusterRenderer在下面.我检查了onClusteredRendered上的标记,它永远不会为空.这是DefaultClusterRenderer中的错误还是我应该做些什么?
private class MyRenderer extends DefaultClusterRenderer<MyObject> { private IconGenerator iconGenerator; private float density; public MyRenderer(Context context,GoogleMap map,ClusterManager<MyObject> clusterManager) { super(context,map,clusterManager); density = context.getResources().getdisplayMetrics().density; } @Override protected void onBeforeClusterItemRendered(MyObject item,MarkerOptions markerOptions) { markerOptions.icon(BitmapDescriptorFactory.fromresource(R.drawable.my_pin)); } @Override protected void onBeforeClusterRendered(Cluster<MyObject> cluster,MarkerOptions markerOptions) { if(iconGenerator == null) { iconGenerator = new IconGenerator(getActivity()); iconGenerator.setContentView(makeTextView(getActivity())); } iconGenerator.setBackground(makeBackground(false)); markerOptions.icon(BitmapDescriptorFactory.fromBitmap(iconGenerator.makeIcon(String.valueOf(cluster.getSize())))); } @Override protected void onClusterRendered(Cluster<MyObject> cluster,Marker marker) { super.onClusterRendered(cluster,marker); // Marker is never null here } @Override protected boolean shouldRenderAsCluster(Cluster<MyObject> cluster) { return cluster.getSize() > 1; } private ShapeDrawable makeBackground(boolean isClicked) { ShapeDrawable background = new ShapeDrawable(new ovalShape()); background.setColorFilter(ContextCompat.getColor(getActivity(),isClicked ? R.color.cluster_marker_clicked : R.color.cluster_marker_unclicked),PorterDuff.Mode.SRC_ATOP); return background; } private SquareTextView makeTextView(Context context) { SquareTextView squareTextView = new SquareTextView(context); ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(-2,-2); squareTextView.setLayoutParams(layoutParams); squareTextView.setTextColor(ContextCompat.getColor(getActivity(),R.color.white)); squareTextView.setTypeface(Utils.getFontBold(getActivity())); squareTextView.setId(com.google.maps.android.R.id.text); int twelveDpi = (int) (12.0F * density); squareTextView.setPadding(twelveDpi,twelveDpi,twelveDpi); return squareTextView; } public IconGenerator getIconGenerator(boolean isClicked) { iconGenerator.setBackground(makeBackground(isClicked)); return iconGenerator; } }
初始化ClusterManager:
final ClusterManager<MyObject> mClusterManager = new ClusterManager<>(getActivity(),googleMap); mClusterManager.addItems(items); renderer = new Customrenderer(getActivity(),googleMap,mClusterManager); mClusterManager.setRenderer(renderer); mClusterManager.cluster(); mClusterManager.setonClusterItemClickListener(this); googleMap.setonMarkerClickListener(mClusterManager);
@antonio:这个初始化对我有用:
public class MapsActivity extends FragmentActivity implements ClusterManager.OnClusterClickListener<MyObject> { // ... private void setUpClusterer() { googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(51.503186,-0.126446),10)); mClusterManager = new ClusterManager<MyObject>(this,googleMap); mClusterManager.setonClusterClickListener(this); renderer = new MyRenderer(this,mClusterManager); mClusterManager.setRenderer(renderer); googleMap.setonCamerachangelistener(mClusterManager); googleMap.setonMarkerClickListener(mClusterManager); addItems(); } private void addItems() { // Set some lat/lng coordinates to start with. double lat = 51.5145160; double lng = -0.1270060; // Add ten cluster items in close proximity,for purposes of this example. for (int i = 0; i < 10; i++) { double offset = i / 60d; lat = lat + offset; lng = lng + offset; MyObject offsetItem = new MyObject(lat,lng); mClusterManager.addItem(offsetItem); } } @Override public boolean onClusterClick(final Cluster<MyObject> cluster) { Marker marker = renderer.getMarker(cluster); marker.setIcon(BitmapDescriptorFactory.fromresource(R.drawable.my_newpin)); return true; } }
解决方法
Map <Cluster<MyObject>,Marker> clusterMarkerMap = new HashMap<>();
然后在DefaultClusterRenderer回调中添加它们,因为标记在那里永远不为null:
@Override protected void onClusterRendered(Cluster<MyObject> cluster,Marker marker) { super.onClusterRendered(cluster,marker); clusterMarkerMap.put(cluster,marker); }
因为DefaultClusterManager在摄像机位置更改时清除它们,所以在创建新的标记映射之前擦除它们:
googleMap.setonCamerachangelistener(new GoogleMap.OnCamerachangelistener() { @Override public void onCameraChange(CameraPosition cameraPosition) { // Clear the map here because the markers will be recreated // when the manager is notified of a (zoom level) camera change if(zoomLevelChanged) clusterMarkerMap.clear(); mClusterManager.onCameraChange(cameraPosition); } });
现在我可以成功获得标记clusterMarkerMap.get(cluster)
android – 目标主机不能为null或在parameters.scheme = null,host = null中设置
我得到以下例外:
Target host must not be null or set in parameters.scheme=null,
host=null,path=/webservices/tempconvert.asmx/FahrenheitToCelsius
我的源代码:
public class Paractivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView t=new TextView(this);
String encodedUrl = null;
// setContentView(R.layout.main);
HttpClient client = new DefaultHttpClient();
//String query = "?Fahrenheit=26";
// String host = "www.w3schools.com/webservices/tempconvert.asmx/";
// encodedUrl = host + URLEncoder.encode(query,"utf-8");
// int p=(Integer) null;
// URI uri = URIUtils.createURI("vv", "www.w3schools.com", 50, "/webservices/tempconvert.asmx", "?Fahrenheit=26", null);
try{
String postURL = "/webservices/tempconvert.asmx/FahrenheitToCelsius";
HttpPost post = new HttpPost(postURL);
// post.addHeader("scheme","vv");
// post.setHeader("host", "www.w3schools.com");
String PostData="36";
StringEntity httpPostEntity = new StringEntity(PostData, HTTP.UTF_8);
post.setEntity(httpPostEntity);
post.setHeader("host", "www.w3schools.com");
post.setHeader("Content-Length", new Integer(PostData.length()).toString());
post.setHeader("Content-Type", "application/x-www-form-urlencoded");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
// nameValuePairs.add(new BasicNameValuePair("host", "www.w3schools.com"));
nameValuePairs.add(new BasicNameValuePair("Fahrenheit", "26"));
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse responsePOST = null;
// Execute HTTP Post Request
// HttpResponse response = httpclient.execute(post);
client.getConnectionManager();
responsePOST = client.execute(post);
httpentity resEntity = responsePOST.getEntity();
String response=EntityUtils.toString(resEntity);
response=response.trim();
// Log.i("RESPONSE=",response);
t.setText("response"+response);
setContentView(t);
} catch (Exception e) {
// Todo Auto-generated catch block
//e.printstacktrace();
t.setText("ex"+e.getMessage());
setContentView(t);
}
}
}
我想在以下位置调用webservice:
http://www.w3schools.com/webservices/tempconvert.asmx?op=CelsiusToFahrenheit
使用HttpClient.How应该给主机和方案作为输入?
请帮忙…
解决方法:
这是您的主机错误
您在post.setHeader(“主持人”,“www.w3schools.com”)中传递“www.w3schools.com”;而你必须通过“http://www.w3schools.com”
您可以在here中引用相同的问题
Can''t bind multiple parameters (''header'' and ''parameters'') to the request''...
2019-01-23 15:46:29.012+08:00 ERROR [6]:
System.InvalidOperationException: Can''t bind multiple parameters (''header'' and ''parameters'') to the request''s content.
at System.Web.Http.Controllers.HttpActionBinding.ExecuteBindingAsync(HttpActionContext actionContext, CancellationToken cancellationToken)
at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at LISA.WebApi.Chile.Helper.CustomMessageHandler.<SendAsync>d__3.MoveNext() in C:\Users\clu\source\repos\Edenred\LISA_6.0.0.0\LISA.CMS.Chile\LISA.WebApi.Chile\Helper\CustomMessageHandler.cs:line 50
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.HttpServer.<SendAsync>d__24.MoveNext()
出现这个错误的原因是,我的controller/action。
action对应的方法,需要2个参数。但是post的时候,request body是一个json字符串。
在目前不做parameter binding的情况下,直接将2个参数更改为1个参数JObject obj。
然后在方法内部,对json字符串进行解析。
dynamic json = obj;
RedemptionInformationRequest parameters =
JsonConverter.DeSerializer<RedemptionInformationRequest>(json.parameters.ToString());
{
"header": {
"SecurityHash": "e1e7b4f072cfd5856a27a31640d5890bf3ccc5af7b5db810fc5e5906ee9f02bd"
},
"parameters": [
{
"TransactionId": "6117",
"Result": "Accredited"
},
{
"TransactionId": "6118",
"Result": "Accepted"
},
{
"TransactionId": "6119",
"Result": "Error"
}
]
}
json的数组是用[]表示的
今天关于我如何让@ParametersAreNonnullByDefault工作?和parameter怎么用的介绍到此结束,谢谢您的阅读,有关##ENGINE=MYISAM AUTO_INCREMENT=30 DEFAULT CHARSET=utf8、android – DefaultClusterRenderer getMarker()在缩放时返回null、android – 目标主机不能为null或在parameters.scheme = null,host = null中设置、Can''t bind multiple parameters (''header'' and ''parameters'') to the request''...等更多相关知识的信息可以在本站进行查询。
本文标签: