<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:georss='http://www.georss.org/georss' xmlns:thr='http://purl.org/syndication/thread/1.0' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='W/&quot;D04GSXkzfCp7ImA9Wx9SGE4.&quot;'><id>tag:blogger.com,1999:blog-6260789219541688531</id><updated>2010-12-08T11:18:48.784-08:00</updated><title>Fundoo Tips</title><subtitle type='html'>                                                                                                                 by Megha Dwivedi</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://fundootips.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6260789219541688531/posts/default?redirect=false&amp;v=2'/><link rel='alternate' type='text/html' href='http://fundootips.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Fundoo Tips</name><uri>http://www.blogger.com/profile/00316179067808414595</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry gd:etag='W/&quot;D04GSXY7eip7ImA9Wx9SGE4.&quot;'><id>tag:blogger.com,1999:blog-6260789219541688531.post-8521597925234109606</id><published>2010-12-08T10:58:00.000-08:00</published><updated>2010-12-08T11:18:48.802-08:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2010-12-08T11:18:48.802-08:00</app:edited><title>Determine if Class or Interface??</title><content type='html'>How to determine if a Class object represents a Class or Interface??&lt;br /&gt;&lt;br /&gt;You can determine by calling isInterface method in Class-&lt;br /&gt;...&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;b&gt;Class cls = java.lang.String.class;&lt;/b&gt; &lt;br /&gt;// returns true as String is a class and not an Interface&lt;br /&gt;boolean isClass = &lt;b&gt;!cls.isInterface();&lt;/b&gt;&lt;br /&gt;&lt;b&gt;cls = java.lang.Cloneable.class;&lt;/b&gt; &lt;br /&gt;isClass = &lt;b&gt;!cls.isInterface();&lt;/b&gt; // false as Cloneable is an interface, note negation sign&lt;br /&gt;...&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;So at runtime if you want to know about the entity you are working with, the Class or Interface, you can use the above method.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6260789219541688531-8521597925234109606?l=fundootips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fundootips.blogspot.com/feeds/8521597925234109606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fundootips.blogspot.com/2010/12/determine-if-class-or-interface.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6260789219541688531/posts/default/8521597925234109606?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6260789219541688531/posts/default/8521597925234109606?v=2'/><link rel='alternate' type='text/html' href='http://fundootips.blogspot.com/2010/12/determine-if-class-or-interface.html' title='Determine if Class or Interface??'/><author><name>Fundoo Tips</name><uri>http://www.blogger.com/profile/00316179067808414595</uri><email>noreply@blogger.com</email><gd:extendedProperty name='OpenSocialUserId' value='04097686738772145165'/></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;CUQEQn47fyp7ImA9Wx9SF0w.&quot;'><id>tag:blogger.com,1999:blog-6260789219541688531.post-218219253112178274</id><published>2010-12-07T00:41:00.000-08:00</published><updated>2010-12-07T01:15:03.007-08:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2010-12-07T01:15:03.007-08:00</app:edited><title>Break Oop's concepts - Java Reflection API</title><content type='html'>&lt;p&gt;As you all know that we can not access private members of a class, but using Java Reflection API you can. Yes you can break Oops concept by accessing private variable, by calling private methods and also you can create an instance of class which is having private constructor-&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Access private members of a class&lt;/strong&gt;&lt;/p&gt;/**&lt;br /&gt; Class having only one private member&lt;br /&gt;*/&lt;pre&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;package com.examples;&lt;br /&gt;class test&lt;br /&gt;{&lt;br /&gt;  &lt;span style="font-weight:bold;"&gt;private&lt;/span&gt; int youCanAccessMe;&lt;br /&gt;}&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Now to access "youCanAccessMe" variable -&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;package com.examples;&lt;br /&gt;import java.lang.reflect.Field;&lt;br /&gt;public class ReflectExample&lt;br /&gt;{&lt;br /&gt; public static void main(String args[])&lt;br /&gt; {&lt;br /&gt;   try&lt;br /&gt;   {&lt;br /&gt;      Class cls = Class.forName("com.examples.test");&lt;br /&gt;      Object obj = cls.newInstance();&lt;br /&gt;      &lt;b&gt;Field[] fields = cls.getDeclaredFields();&lt;br /&gt;      for( int i = 0 ; i &lt;&gt;fields[i].setAccessible(true);&lt;br /&gt;           System.out.println("Field Name--&gt;"+fields[i].getName()+"\t"&lt;br /&gt;                  +"Field Type--&gt;"+ fields[i].getType().getName()+"\t"&lt;br /&gt;                     +"Field Value--&gt;"+ fields[i].get(obj));&lt;/b&gt;&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;   catch(Exception e)&lt;br /&gt;   {&lt;br /&gt;     System.out.println("Exception occured" + e);&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/pre&gt;&lt;br /&gt;You can get the Class object and using Class object you can also create an object of class.&lt;br /&gt;Class cls = Class.forName("com.examples.test");&lt;br /&gt;Object obj = cls.newInstance();&lt;br /&gt;To access private member variable, you have to call setAccessible method to set accessibility level to true.&lt;br /&gt;fields[i].getName() - To get name of variable&lt;br /&gt;fields[i].getType().getName() - To get the type of variable&lt;br /&gt;fields[i].get(obj) - To get its values&lt;br /&gt;Thus Reflection is a powerful approach to analyze the class at runtime.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6260789219541688531-218219253112178274?l=fundootips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fundootips.blogspot.com/feeds/218219253112178274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fundootips.blogspot.com/2010/12/break-oops-concepts-java-reflection-api.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6260789219541688531/posts/default/218219253112178274?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6260789219541688531/posts/default/218219253112178274?v=2'/><link rel='alternate' type='text/html' href='http://fundootips.blogspot.com/2010/12/break-oops-concepts-java-reflection-api.html' title='Break Oop&apos;s concepts - Java Reflection API'/><author><name>Fundoo Tips</name><uri>http://www.blogger.com/profile/00316179067808414595</uri><email>noreply@blogger.com</email><gd:extendedProperty name='OpenSocialUserId' value='04097686738772145165'/></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;C0UBRn0zeSp7ImA9Wx9SF0w.&quot;'><id>tag:blogger.com,1999:blog-6260789219541688531.post-2190926768229869465</id><published>2010-12-07T00:09:00.000-08:00</published><updated>2010-12-07T00:40:57.381-08:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2010-12-07T00:40:57.381-08:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='poem'/><title>New post - which is irrelevant in this blog</title><content type='html'>&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Hi, i am publishing this post here, which i liked and is not supposed to post in this blog, but i can't resist posting it. One of my friend(Uday Shankar) has written a very touchy poem(Only people who are in love or had break up can understand).&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;"Beautiful memories".&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;We had our first glance,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;that was the start of our romance.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Then we had a small talk&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;while we had a pleasant walk.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;We had some fortunate encounters&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;and we became regular chatters.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;We always enjoyed each others company&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;so we started meeting few times ... then many.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Love was in the air,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;each other was all, we care.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;One day those feelings were expressed.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;From that moment life get blessed.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;We had our first fight,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;but we can't live without others sight.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;so we make up our mind,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;to never leave each other behind.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Don't know what had gone wrong&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;I'm feeling dreadful for so long&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;The life has parted our ways&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;But those were my most beautiful days&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6260789219541688531-2190926768229869465?l=fundootips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fundootips.blogspot.com/feeds/2190926768229869465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fundootips.blogspot.com/2010/12/new-post-which-is-irrelevant-in-this.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6260789219541688531/posts/default/2190926768229869465?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6260789219541688531/posts/default/2190926768229869465?v=2'/><link rel='alternate' type='text/html' href='http://fundootips.blogspot.com/2010/12/new-post-which-is-irrelevant-in-this.html' title='New post - which is irrelevant in this blog'/><author><name>Fundoo Tips</name><uri>http://www.blogger.com/profile/00316179067808414595</uri><email>noreply@blogger.com</email><gd:extendedProperty name='OpenSocialUserId' value='04097686738772145165'/></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;CkUHRngzeCp7ImA9Wx9SFkg.&quot;'><id>tag:blogger.com,1999:blog-6260789219541688531.post-3671547367915941831</id><published>2010-12-06T06:09:00.000-08:00</published><updated>2010-12-06T07:43:57.680-08:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2010-12-06T07:43:57.680-08:00</app:edited><title>Java 5 feature - Covariant return types</title><content type='html'>Now with Java 5 you can override a function and can make their return type different* which was not allowed before Java 5.&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;The return type of the subclass' method must be a subclass of the return type of the superclass' method. In other words you can make the return type of the subclass' method the same or less general.&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Confused???? Lets understand with an example -&lt;/span&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;class Clothe { &lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;     &lt;strong&gt;public Clothe getDesign()&lt;/strong&gt; {&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;        System.out.println("clothe");&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;            return new Clothe();&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;    }&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;}&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;class Shirt extends Clothe {&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;   &lt;strong&gt; public Shirt getDesign()&lt;/strong&gt; {  &lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;     System.out.println("shirt");&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;     return new Shirt();&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;   }&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;}&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;An overridden method in a derived class can return a type derived from the type returned by the base-class method.&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;public class CovariantReturn {&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;    public static void main(String[] args) {&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;       Clothe clothe = new Clothe();&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;       System.out.println(clothe.getDesign());&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;       clothe = new Shirt();&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;       System.out.println(clothe.getDesign());&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;    } &lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;}   &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Output:&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;clothe&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;Clothe@923e30&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;shirt&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;Shirt@130c19b&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;Allowing covariant return types in Java has been in Sun's bugparade for a long time (&lt;/span&gt;&lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4144488"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;u&gt;http://bugs.sun.com/bugdatabase/view_bug.do? bug_id=4144488&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;). Now finally, JDK 1.5 supports it.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6260789219541688531-3671547367915941831?l=fundootips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fundootips.blogspot.com/feeds/3671547367915941831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fundootips.blogspot.com/2010/12/java-5-feature-covariant-return-types.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6260789219541688531/posts/default/3671547367915941831?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6260789219541688531/posts/default/3671547367915941831?v=2'/><link rel='alternate' type='text/html' href='http://fundootips.blogspot.com/2010/12/java-5-feature-covariant-return-types.html' title='Java 5 feature - Covariant return types'/><author><name>Fundoo Tips</name><uri>http://www.blogger.com/profile/00316179067808414595</uri><email>noreply@blogger.com</email><gd:extendedProperty name='OpenSocialUserId' value='04097686738772145165'/></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;CEcDSXo9eip7ImA9Wx9SFEg.&quot;'><id>tag:blogger.com,1999:blog-6260789219541688531.post-9097078386477249075</id><published>2010-12-04T00:07:00.000-08:00</published><updated>2010-12-04T00:41:18.462-08:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2010-12-04T00:41:18.462-08:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='override put'/><category scheme='http://www.blogger.com/atom/ns#' term='case-insensitive map'/><category scheme='http://www.blogger.com/atom/ns#' term='override get'/><category scheme='http://www.blogger.com/atom/ns#' term='interview question'/><title>How to create Case Insensitive Map in Java</title><content type='html'>In order to create case insensitive map, just extend HashMap class and override get and put method. Using the below code you can give keys irrespective of case.&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="color:#6633ff;"&gt;class CaseImap &lt;/span&gt;&lt;b&gt;&lt;span style="color:#ff0000;"&gt;extends HashMap&amp;lt;String, Object&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#6633ff;"&gt;&lt;br /&gt;{&lt;br /&gt;// Overriding get method&lt;br /&gt;public String &lt;/span&gt;&lt;b&gt;&lt;span style="color:#ff0000;"&gt;get&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#6633ff;"&gt;(String key)&lt;br /&gt;{&lt;br /&gt;  return (String)super.get(key.toLowerCase());&lt;br /&gt;}&lt;br /&gt;// Overriding put method&lt;br /&gt;public Object &lt;/span&gt;&lt;b&gt;&lt;span style="color:#ff0000;"&gt;put&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#6633ff;"&gt;(String key, Object value)&lt;br /&gt;{&lt;br /&gt;  return super.put(key.toLowerCase(), value);&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;/table&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6260789219541688531-9097078386477249075?l=fundootips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fundootips.blogspot.com/feeds/9097078386477249075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fundootips.blogspot.com/2010/12/java-maps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6260789219541688531/posts/default/9097078386477249075?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6260789219541688531/posts/default/9097078386477249075?v=2'/><link rel='alternate' type='text/html' href='http://fundootips.blogspot.com/2010/12/java-maps.html' title='How to create Case Insensitive Map in Java'/><author><name>Fundoo Tips</name><uri>http://www.blogger.com/profile/00316179067808414595</uri><email>noreply@blogger.com</email><gd:extendedProperty name='OpenSocialUserId' value='04097686738772145165'/></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;CEQGRXc6eyp7ImA9Wx9SFEg.&quot;'><id>tag:blogger.com,1999:blog-6260789219541688531.post-4399545003328070675</id><published>2010-12-03T09:37:00.000-08:00</published><updated>2010-12-04T00:45:24.913-08:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2010-12-04T00:45:24.913-08:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='isInfoEnabled'/><category scheme='http://www.blogger.com/atom/ns#' term='java -javaagent:net.surguy.logfilter.LogPreloader=debug [your own class]'/><category scheme='http://www.blogger.com/atom/ns#' term='logger'/><category scheme='http://www.blogger.com/atom/ns#' term='java tips'/><category scheme='http://www.blogger.com/atom/ns#' term='log4j'/><category scheme='http://www.blogger.com/atom/ns#' term='log.info'/><title>Using isInfoEnabled in Java</title><content type='html'>&lt;b&gt;&lt;span style="color:blue;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;-Logging using log.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:blue;"&gt;&lt;b&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;info&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt; Just have the below &lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;"if"&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt; block before using log.info or log.debug or log.error&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="color:#cc0000;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;  if(log.isInfoEnabled()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="color:#cc0000;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt; {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="color:#cc0000;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="color:#cc0000;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt; log.info(yourFunctionName + " :--- " + getVeryLargeString() + someVar);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="color:#cc0000;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt; } &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;strong&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;Why?&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;Suppose the current log4j level is set to Error then log.info messages will not be displayed, it will take only few nanoseconds to execute log method but it may take time to execute the function call, if any, in the message&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;strong&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;Drawback of not using if condition&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;1) Unnecessary call to the functions in the log.info message &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;2) Many string objects will be created in the string pool&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;strong&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;Drawback of using if condition-&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;1) For each and every log method call u have to have this condition, code will not be readable and not be clear much.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;2) Extra if condition in many places.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="color:blue;"&gt;&lt;b&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;Jdk1.5 has solution for this problem, it removes log calls automatically removed if they're not being used.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:blue;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;It is possible to do this using bytecode manipulation - searching for and removing calls to the logger as the class is loaded. The new Java 1.5 instrumentation classes make this particularly easy, by allowing ClassTransformer classes to be registered on the command line that are allowed to manipulate class files as they are loaded.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;To use this code, launch Java with the arguments:&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;java -javaagent:net.surguy.logfilter.LogPreloader=debug [your own class]&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:blue;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;The argument is optional, and can be one of "debug", "info", "warn", "error" or "fatal", corresponding to the standard Log4J log levels.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:blue;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;How does it work&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;As Java loads each class, it passes it to each of the registered ClassFileTransformers, which get a chance to alter its bytecode. It uses the ASM bytecode manipulation library to do so.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6260789219541688531-4399545003328070675?l=fundootips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fundootips.blogspot.com/feeds/4399545003328070675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fundootips.blogspot.com/2010/12/java-tips.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6260789219541688531/posts/default/4399545003328070675?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6260789219541688531/posts/default/4399545003328070675?v=2'/><link rel='alternate' type='text/html' href='http://fundootips.blogspot.com/2010/12/java-tips.html' title='Using isInfoEnabled in Java'/><author><name>Fundoo Tips</name><uri>http://www.blogger.com/profile/00316179067808414595</uri><email>noreply@blogger.com</email><gd:extendedProperty name='OpenSocialUserId' value='04097686738772145165'/></author><thr:total>4</thr:total></entry></feed>