Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-users] the codes cannot be compiled.

The compiler for The line 7 and Line 12 complains that
     [iajc] D:\workdir\DPsample2\main\src\com\designpattern\singleton\RegSinglet
onProtocol.aj:12 [error] incompatible return type applying to constructor-call(v
oid com.designpattern.singleton.RegSingleton.<init>())
     [iajc]
     [iajc] D:\workdir\DPsample2\main\src\com\designpattern\singleton\Main.java:
7 [error] incompatible return type applying to constructor-call(void com.designp
attern.singleton.RegSingleton.<init>())
     [iajc] System.out.println( new RegSingleton() );
     [iajc] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     [iajc] D:\workdir\DPsample2\main\src\com\designpattern\singleton\RegSinglet
onProtocol.aj:12 [warning] advice defined in com.designpattern.singleton.RegSing
letonProtocol has not been applied [Xlint:adviceDidNotMatch]
     [iajc] Singleton around() : call((Singleton+).new(..))
     [iajc]           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
public aspect RegSingletonProtocol {
    private Hashtable singletons=new Hashtable();
    public interface Singleton{}
    declare parents : RegSingleton implements Singleton;
    Singleton around() : call((Singleton+).new(..))    // line 12
    {
        Class singleton=thisJoinPoint.getSignature().getDeclaringType();
        if(singletons.get(singleton)==null){
           singletons.put(singleton, proceed());
        }
        return (Singleton)singletons.get(singleton);
    }
}
//
public class Main 
{
 public static void main(String [] args)
 {
  System.out.println( new RegSingleton() );   // Line 7
 }
}
//
public class RegSingleton 
{
 private static int count=0;
 public RegSingleton() 
 {
     count++;
     System.out.println("Class No. "+count);
 }
}

What's wrong with the above codes.
 
Thanks
 
guofeng
 


Back to the top