如何理解这个语法类obj = class.method;

时间:2016-11-25 12:52:04

标签: java android

你有没有在java

中看到过这种语法

class obj = class.method;

TaskStackBuilder stack = TaskStackBuilder.create(this);

这是什么意思?

2 个答案:

答案 0 :(得分:1)

TaskStackBuilder stack= TaskStackBuilder.create(this);
     这是什么意思?

这意味着TaskStackBuilder.create返回TaskStackBuilder类型的对象。像这样的方法通常称为 builder factory 方法。

示例:

class TaskStackBuilder {
    public static TaskStackBuilder create(Object obj) {
        return new TaskStackBuilder();
    }
}

当然,您正在查看的那个可能会使用obj(并使用更具体的类型)。

当可以缓存和重用对象实例时,工厂方法特别有用。例如,Integer类缓存Integer.valueOf(int)缓存{-1}}实例的值-128 throug 127,并可以缓存其他实例,所以当你执行Integer时(例如),您将始终取回Integer.valueOf(20)相同实例(不仅仅是等效的实例)。

答案 1 :(得分:0)

我认为,你的意思是Factory Pattern你可以用私有类构造函数来创建一个spezified实例。

您班级的默认构造函数是私有的:

public static void main(String[] args) {
    System.out.println(isAnagram("mary", "army"));
}

public static boolean isAnagram(String s1, String s2){
    char[] c1 = s1.toLowerCase().toCharArray();
    char[] c2 = s2.toLowerCase().toCharArray();
    Arrays.sort(c1);
    Arrays.sort(c2);

    boolean anagram = false;
    if(Arrays.equals(c1, c2)){anagram = true;}

    return anagram;
}

并且要创建一个实例,可以调用create方法,该方法可以使用私有consturctor来创建实例。

另见singleton pattern。您只需要一个对象实例的地方:

public class Test {     private static Test _instance = null;

public SomeClass{
     private SomeClass(){
     }
}

}