Skip to main content

Type safety: Unchecked cast - Spring and Hibernate

Well, first of all, you're wasting memory with the new HashMap creation call. Your second line completely disregards the reference to this created hashmap, making it then available to the garbage collector. So, don't do that, use:
private Map<String, String> someMap = (HashMap<String, String>)getApplicationContext().getBean("someMap");
Secondly, the compiler is complaining that you cast the object to a HashMap without checking if it is a HashMap. But, even if you were to do:
if(getApplicationContext().getBean("someMap") instanceof HashMap) {
private Map<String, String> someMap = (HashMap<String, String>)getApplicationContext().getBean("someMap");}
You would probably still get this warning. The problem is, getBean returns Object, so it is unknown what the type is. Converting it to HashMap directly would not cause the problem with the second case (and perhaps there would not be a warning in the first case, I'm not sure how pedantic the Java compiler is with warnings for Java 5). However, you are converting it to a HashMap<String, String>.
HashMaps are really maps that take an object as a key and have an object as a value, HashMap<Object, Object> if you will. Thus, there is no guarantee that when you get your bean that it can be represented as a HashMap<String, String> because you could have HashMap<Date, Calendar> because the non-generic representation that is returned can have any objects.

If the code compiles, and you can execute String value = map.get("thisString"); without any errors, don't worry about this warning. But if the map isn't completely of string keys to string values, you will get a ClassCastException at runtime, because the generics cannot block this from happening in this case.

Comments

Popular posts from this blog

REST VS SOAP

SOAP and REST both allow you to create your own API. API stands for Application Programming Interface. It makes it possible to transfer data from an application to other applications. An API receives requests and sends back responses through internet protocols such as HTTP, SMTP, and others.  Many popular websites provide public APIs for their users, for example, Google Maps has a  public REST API  that lets you customize Google Maps with your own content. There are also many APIs that have been created by companies for internal use. There are significant differences between SOAP and RESTful web services. The bullets below break down the features of each web service based on personal experience. REST RESTful web services are stateless. You can test this condition by restarting the server and checking if interactions survive. For most servers, RESTful web services provide a good caching infrastructure over an HTTP GET method. This can improve the performance...

Introduction to GitLab - Initial configuration

In order to use GitLab, the user has to install git in your PC. reference: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git Git can be downloaded using the following URL reference: https://git-scm.com/downloads Then the user can check out the code using the given URL to the git repository. copy the URL and use it in git-bash or IntelliJ Idea. you have to use the URL without changing. I have installed IntelliJ Idea in my local PC. I am trying to clone the uploaded repository to a separate location. I have tried to checkout using the following screen There was an issue as “permission denied (publickey gssapi-keyex gssapi-with-mic) ”. The solution is to add an ssh key to GitLab account. Go to .ssh folder in c://users/xxx/ folder. Then open command window (Ex : git bash) Then type ssh-keygen Then open id_rsa.pub and put the ssh key in the giltlab account. Profile setting -> SSH Keys Reference:  https://...

Iteration 5 (13 July– 19 July)

I  started working with the development of the Android version of the engine. First of all I studied the existing prototype created by Kris Verlaenen ( planet.jboss.org/jbpm5_lightweight_running_on_android ) . Then I started Implementing a task that will send a sms to anyone to their number. For this I used SmsManager . It can be archived by this, SmsManager smsManager = SmsManager. getDefault ( ) ; smsManager. sendTextMessage ( "phoneNo" , null , "sms message" , null , null ) ;