Marker interface in java

Marker interface is a interface which don’t have any mehtod.It is used to tag the implementing class based on their purpose.Marker interface is a Java interface which doesn’t actually define any fields. It is just used to “mark” Java classes which support a certain capability –the class marks itself as implementing the interface. For example, the java.lang.Cloneable interface.
In java language programming, interfaces with no methods are known as marker interfaces or tagged interface.Marker Interfaces are implemented by the classes or their super classes in order to add some functionality.Marker interfaces are understood by the JVM. The JVM takes care of how to deal with a class that implements that marker interface

Why we use marker interface.
The marker interfaces are used to provide certain functionality to classes you code. Take for instance the Cloneable interface. This interface is implemented by the JVM itself and allows copies of objects to be created without the developer having to write code for this purpose. User written marker interfaces can also be used for inheritance purposes.Marker Interfaces are used to mark the capability of a class as implementing a specific interface at run-time.

Example of marker Interface.

java,lang.Cloneable
java,io.Serializable
java.util.EventListener

pimp it

Anonymous Classes in Java

A type of inner class that has no name that you define right in the middle of a method (where static init blocks and instance init blocks count as methods). You define it, and create an object of that type as a parameter all in one line. An anonymous class is defined and instantiated in a single succinct expression using the new operator.Used for creating simple delegate callback objects.These anonymous inner classes can access the static and instance variables of the enclosing outer class.
Instead of passing arguments to a constructor, your inner class methods can reach out and grab what they need directly from local variables in the enclosing method. The other technique is to use an instance initialiser block. You are only allowed one per anonymous inner class.
Syntax for Anonymous Classes
new class-name ( [ argument-list ] ) { class-body }

package Vinay; 
public class VinayMain
{ 
public static void main(String[] args) 
{ 
// Here is where the anonymous class is defined and instantiated // 
Runnable vinayrun = new Runnable() 
{
int Total = 0; 
public void run() 
{ 
for (int i=0; i<10000000; i++) 
{
Total++;
} 
System.out.println(Integer.toString(Total)); 
 } 
 }; 
vinayrun.run(); 
} 
 }

create an instance, named vinayrun , of a nameless (anonymous) class which implements the java.lang.Runnable interface.And we are calling the run mehtod of anonymous class through vinayrun object.

Drawback– The big drawback with anonymous classes is they can’t have explicit constructors. You can’t pass them any parameters when they are instantiated.

Benefits of Anonymous Classes
The key benefit of an anonymous class is encapsulation (or clutter reduction). An anonymous class is, in a sense, the ultimate in private object oriented encapsulation. It is defined exactly where it is needed, it can never be used anywhere else, and it has totally local scope.One final key benefit of anonymous classes is that they have access to all data and methods of their containing classes, including private members; meaning that for small highly localized tasks, they may require less initialization.

References –
http://ssmela.googlepages.com/AnonymousClassesinJava.pdf
http://mindprod.com/jgloss/anonymousclasses.html

Anonymous Constructor in C#

C# 3.0 introduced a very compact way of initializing objects of a class.

Previously we used to initialize objects like this:

MailMessage mailMessage = new MailMessage();
            mailMessage.Subject=UIConstants.UIErrorSubject;
            mailMessage.Body = message;
            mailMessage.BodyEncoding = Encoding.GetEncoding(UIConstants.NewAccountMailBodyEncoding);
            mailMessage.From = new MailAddress(UIConstants.Me2AdminEmail);
  

Now, with the new feature known as Anonymous Constructors or Object Intializers we can do the same code in C# 3.0 and above like this:

 MailMessage mailMessage = new MailMessage()
            {
                Subject = UIConstants.UIErrorSubject,
                Body = message,
                BodyEncoding = Encoding.GetEncoding(UIConstants.NewAccountMailBodyEncoding),
                From = new MailAddress(UIConstants.Me2AdminEmail)
            };
  

In the C# 3.0 code, there is no constructor that corresponds to the way I instantiated the object. This prevents developers from having to create a different constructor for each different set of properties that need to be set. It also make the code easier to read.

kick it on DotNetKicks.com

Shout it

pimp it