如何获取最初创建对象的类

时间:2018-01-31 16:00:53

标签: java android

我有:

class OriginalClass {  
    View createMyView() {  
        TextView textView = new TextView(context);  
        return textView;  
    }  
}  

然后:

class HoldingClass {  
    List<TextView> textViewsList() {  
        List<TextView> textViews = new ArrayList();  
        textViews.add(new OriginalClass().createMyView());  
        return textViews;  
    }  
}  

然后:

class SomeOtherClass {  
    void aMethod() {  
        TextView receivedTextView = (new HoldingClass().textViewsList()).get(0);  
        // Retrieve original class from somewhere here  
    }  
}  

如何从receivedTextView检索“OriginalClass”中最初创建的课程SomeOtherClass

4 个答案:

答案 0 :(得分:1)

你不能,当然除了你存储的数据是一对TextView和创建类的一些指示(可能是它的Class对象)。该语言不会自动存储此类信息,因为它通常会非常昂贵。

答案 1 :(得分:1)

你可以做那样的事情

使用textView.setTag(getClass().getSimpleName())

    class OriginalClass {  
        View createMyView() {  
            TextView textView = new TextView(context);  
            textView.setTag(getClass().getSimpleName());
            return textView;  
        }  
    } 

然后按getTag()

检索原始班级名称
    class SomeOtherClass {  
        void aMethod() {  
            TextView receivedTextView = (new 
            HoldingClass().textViewsList()).get(0);  
            // Retrieve original class from somewhere here
            String originalClassName = (String) receivedTextView.getTag();  
        }  
    }  

答案 2 :(得分:0)

在初始化TextView时尝试设置标记。您可以稍后检索标记。

textView.setTag(OriginalClass.class.getSimpleName());

答案 3 :(得分:0)

在TextView构造函数中,向当前线程询问堆栈跟踪,向结果数组询问第0个元素并获取类

String callersClass = Thread.currentThread()。getStackTrace()[0] .getClassName();