Showing posts with label Java. Show all posts
Showing posts with label Java. Show all posts

Monday, July 7, 2014

Maven Tip: Get sources and Javadocs of jars

When we are using Maven in an IDE we often find/feel the need of IDE to resolve source code and Javadocs for the library dependencies. There’s an easy way to accomplish that goal which maven provides us.

# mvn dependency:sources
# mvn dependency:resolve -Dclassifier=javadoc

The first command will attempt to download source code for each of the dependencies in your pom file.

The second command will attempt to download the Javadocs.
Only problem here is that some of them won’t have source code packaged and so they won’t have Javadocs.

Saturday, January 5, 2013

Use of String's intern() Method in Java

Someone ask me "Do you Know the use of Strings intern() in java ?"

I was confused because I heard of it but never had the opportunity to use it. So I googled it and found something interesting.

As per meaning/method summary given in JAVA API Docs :
intern() Returns a canonical representation for the string object.

So actually what it do??


A pool of String initially empty, is maintained privately by String  class.

When the intern method is invoked, if the pool already contains a string equal to this String object as determined by the equals(Object) method, then the string from the pool is returned.
 Otherwise, this String object is added to the pool and a reference to this String object is returned.

It follows that for any two strings s and t, s.intern() == t.intern() is true if and only if s.equals(t) is true.

An example is given below :

public class InternExample {
 public static void main(String[] args)
   {
       // Create three strings in three different ways.
       String s1 = "Intern Example";
       String s2 = new StringBuffer("Intern").append(" Example").toString();
       String s3 = s2.intern();

       //Compare  strings using == & equals
       System.out.println("s1 == s2? " + (s1 == s2)+" --"+s1.equals(s2));
       System.out.println("s1 == s3? " + (s1 == s3)+" --"+s1.equals(s3));
   }
}


In the above example the object references are compared as well as the value of String objects.
Output is :

s1 == s2? false --true
s1 == s3? true --true