[英]Java Generics Class as method parameter
I have a TabListener in Android defined in this way: 我在Android中以这种方式定义了TabListener:
public static class TabListener<T extends Fragment>
implements ActionBar.TabListener { ... }
An I have this source code: 我有这个源代码:
Tab myTab = myActionBar.
newTab().
setText("Home").
setTabListener(new TabListener<MyFragment>(
this,
"Home",
MyFragment.class
));
...
Now I want to put this into a method: 现在,我想将其放入方法中:
addTab("Home", ???);
private void addTab(String text, ???) {
Tab myTab = myActionBar.
newTab().
setText(text).
setTabListener(new TabListener<???>(
this,
text,
???.class
));
...
}
What I have to fill in instead of ???
我必须填写而不是
???
? ?
Your tab listener needs the type parameter to be a subclass of Fragment
您的标签页侦听器需要将type参数作为
Fragment
的子类
public static class TabListener<T extends Fragment>
Therefore, you need to make sure it is the case in your code 因此,您需要确保代码中确实如此
addTab("Home", ???);
private <T extends Fragment> void addTab(String text, Class<T> clazz) {
Tab myTab = myActionBar.
newTab().
setText(text).
setTabListener(new TabListener<T>(
this,
text,
clazz
));
...
}
addTab("Home", MyFragment.class);
private void addTab(String text, Class<? extends Fragment> clazz) {
Tab myTab = myActionBar.
newTab().
setText(text).
setTabListener(new TabListener<>(
this,
text,
clazz
));
...
}
Something like this is probably what you're looking for: 您可能正在寻找这样的东西:
private <T> void addTab(String text, Class<T> clazz) {
Tab myTab = myActionBar.
newTab().
setText(text).
setTabListener(new TabListener<T>(
this,
text,
clazz
));
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.