GVKun编程网logo

我如何让@ParametersAreNonnullByDefault工作?(parameter怎么用)

33

在本文中,我们将为您详细介绍我如何让@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怎么用)

我如何让@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

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

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;
    }
}

解决方法

在上面的情况下,无法让renderer.getMarker(cluster)返回一个标记.解决方法是创建:
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中设置

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''...

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''...等更多相关知识的信息可以在本站进行查询。

本文标签: