前言:写过很多静态工具类,发现静态类根本无法返回自身对象引用(因为静态本来就没有对象),可是我也想像单例对象一样,能够返回自身引用,从而调用方法的时候可以连续调用,形成一种链式效果,那怎么办呢?看我下面写的这个类就清楚了,实际上就是单例的意思吧!!!现在想想,这种做法,感觉有点怪了,不算科学,也有点多此一举,破坏了静态类的好处,因为这样就跟单例一样,整个类都加载进来了。
/**
* @desc
* @auth 方毅超
* @time 2017/8/18 10:14
*/
public class A {
static A a ;
static {
a =new A();
}
static String name ;
public static A init(String name){
A.name = name;
return a;
}
public static A sprint(Context ctx){
Toast.makeText(ctx.getApplicationContext(), "AAAA--"+name, Toast.LENGTH_LONG).show();
Log.i("AAAA","AAAA--"+name);
return a;
}
/**
* 利用匿名类在静态方法中获取当前类,弥补静态方法中不能用this.getClass()的不足
*/
/*private static final Class getClassForStatic() {
return new Object() {
public Class getClassForStatic() {
return this.getClass();
}
}.getClassForStatic();
}*/
}
/**
* 利用匿名类静态方法中获取当前类名
*/
/* private static final String getClassNameForStatic() {
return new Object() {
public String getClassName() {
String className = this.getClass().getName();
return className.substring(0, className.lastIndexOf('$'));
}
}.getClassName();
} */
类外引用:
A.init("a").sprint(this).init("b").sprint(this).init("c").sprint(this);