前言:寫過很多靜態工具類,發現靜態類根本無法返回自身對象引用(因為靜態本來就沒有對象),可是我也想像單例對象一樣,能夠返回自身引用,從而調用方法的時候可以連續調用,形成一種鏈式效果,那怎么辦呢?看我下面寫的這個類就清楚了,實際上就是單例的意思吧!!!現在想想,這種做法,感覺有點怪了,不算科學,也有點多此一舉,破壞了靜態類的好處,因為這樣就跟單例一樣,整個類都加載進來了。
/**
* @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);