我在我的Android应用程序中有这个通用活动
public class NavegadorActivity<T> extends Activity {
....
...
}
Run Code Online (Sandbox Code Playgroud)
我试着把它称之为下面
Intent intent = new Intent(v.getContext(), NavegadorActivity<Clientes>.class);
Run Code Online (Sandbox Code Playgroud)
但是,Intent构造函数不接受通用类作为param.然后我尝试了这段代码
Class<NavegadorActivity<Clientes>> NavClientes = NavegadorActivity.class;
Intent intent = new Intent(v.getContext(), NavClientes.class);
Run Code Online (Sandbox Code Playgroud)
哪个也行不通.
也不是这个
Class<NavegadorActivity<Clientes>> NavClientes = NavegadorActivity<Clientes>.class;
Intent intent = new Intent(v.getContext(), NavClientes.class);
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何将泛型类作为param传递给Intent构造函数?
谢谢
我有这些课程:
public class A <T>{
}
public interface I {
}
public class X implements I {
}
public class B extends A<X>{
}
Run Code Online (Sandbox Code Playgroud)
在我的代码中如果我这样做我得到错误:
A<I> myobj = (A<I>) new B();
Run Code Online (Sandbox Code Playgroud)
肯定是:
A<X> myobj = (A<X>) new B();
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样做是好的,并且效果很好:
A<I> myobj = null;
myobj = (A<I>) Class.forName("B").newInstance();
Run Code Online (Sandbox Code Playgroud)
在最后一种情况下,我访问B的所有方法,并且工作得很好.
我需要将myobj声明为A,因为我只保证泛型obj的接口而不是具体的类.
有谁知道为什么我的第一个案例不起作用?
我想实现第一个应该是最优雅的.