Posts

Showing posts from 2013

How generics can be used in Class Factories

Lets see how generics can be used to create generic interface for class factories. public class GenericFactory <E> { Class<E> thisClass=null; public GenericFactory (Class iclass) { this.thisClass = iclass; } public E createInstance() throws IllegalAccessException,InstantiationException{ return(E)this.thisClass.newInstance(); } } The <E> is a type token that signals that this class has a type set when instantiated. public class Myclass { void print() { System.out.println("Hellooo"); } } public class Main { public static void main(String[] args) throws IllegalAccessException, InstantiationException { GenericFactory<Myclass> factory = new GenericFactory<Myclass>(Myclass.class); Myclass myclass= factory.createInstance(); myclass.print(); } } Output:-   Hellooo We can see that, it is not necessary to cast the object returned from the factory.createInstance().

When to use getClass() and instanceOf in Java

getClass() only gives equality if two objects belong to same class whereas instanceOf works for subtype also. If two objects of different classes are checked for equal, then we use instanceOf . But once you use instanceOf at some level in the class hierarchy everything below it must use instanceOf or you will violatate the symmetry clause of equals contract.  e.g. any list can be equal to any list as long they have same elements iun the same order. So any List implementation equals() method must do instanceOf and not getclass() and then compare. On the other hand, it only make sense for na instance of class X to be equal to another instance of class X ( and not any subclass ) , then use getClass().

Java Interview Points

Java Interview Points Uses of finalizer :-  It acts as a safety net. It may be better to free the resources than never e.g. FileInputStream, Connection etc.  Object with native peers, the garbage collector doesn't know about it when it reclaimed the java peer. If native peer hold some critical resources, we can use this method to free the resources.  Clone will not work if the array fields are final because clone would be prohibited from assigning a new value to the field.  A method in an interface can’t be native, synchronized, strictfp but in the implementation class it can be since these keywords describe implementation properties rather than interface properties. Same is true for final.  Only data associated with specific instances of a class is serialized, because static data is associated with a class as opposite to an instance, so it’s not serialized automatically. To serialize static data, one must provide class specific serialization.  Array implementation in Ja

Why we have Runtime Exceptioons in Java

Image
Oracle  defines Exception as  "An  exception  is an event, which occurs during the execution of a program, that disrupts the normal flow of the program's instructions." We have three categories of exception as:- Checked Exceptions , which are subject to catch . All exceptions are checked exceptions, except for those indicated by  Error ,  RuntimeException , and their subclasses Runtime Exceptions are internal to the application and system does not expect to recover from. NullPointerException is type of RunTime Exception Error are exceptions which are external to applications like OutOfMemory Exception, StackOverFlow Exception.    The class diagram of Exception is as follows:- This discussion is regarding why we have Runtime type of exceptions in Java. When exception was first designed, there was worry about conditions that occur because of problems with the machine on which the program being run bugs in VM  security violations. These sort of thin