Java中的泛型类参数

Java中的泛型类参数,java,android,Java,Android,因此,我在Android应用程序中到处传递活动和意图来处理线程(我确信有更好的范例,因为我的代码开始变得像意大利面条一样烦人——通常是我做得不对的迹象) 但不管怎样,我正在尝试这样做: 公共类SomeCoolActivity扩展活动{ 包含Network或SleepStatement的私有类DoSometask,但不增加读取扩展异步任务{ @凌驾 受保护的Void doInBackground(Void…参数){ //在非UI线程上执行一些有用的操作。。。 返回null; } @凌驾 受保护的v

因此,我在Android应用程序中到处传递活动和意图来处理线程(我确信有更好的范例,因为我的代码开始变得像意大利面条一样烦人——通常是我做得不对的迹象)

但不管怎样,我正在尝试这样做:

公共类SomeCoolActivity扩展活动{
包含Network或SleepStatement的私有类DoSometask,但不增加读取扩展异步任务{
@凌驾
受保护的Void doInBackground(Void…参数){
//在非UI线程上执行一些有用的操作。。。
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
//现在完成了,我需要进入下一个活动。如果我在这里这样做,
//我将得到错误。因此,我将调用父活动类上的方法:
loadNextActivity(NextActivity.class);
}
}
受保护的void loadNextActivity(类activityToLoad){
startActivity(新意图(本,activityToLoad));
}
}
但这不起作用,因为它告诉我有一个错误

这不是活动。是的,显然它不是完全相同的类,但是人们希望我能够传入任何从Activity派生的类(包括NextActivity),但不能传入任何不传入的类(如果我将loadNextActivity定义为

protectedvoid loadNextActivity(类活动到加载)
但这并不理想,因为这样我就可以传递我想要的任何东西,可能不是活动的东西……这是Java,毕竟不是Ruby)。而且,如果它只允许我通过一门课……那到底有什么好处呢


那么我该如何实现这一点呢?

您可以编写通配符,如:

protected void loadNextActivity(Class<? extends Activity> activityToLoad)
您的代码注释说“如果我在这里这样做,我将得到错误。”。你犯了什么错误?您是否将无效的上下文作为getIntent()的参数?或者startActivity()无效?可能的原因是onPostExecute()是从内部类调用的,而不是从活动本身调用的

试试这个:

  onPostExecute(Void result) {
    Intent intent = new Intent(SomeCoolActivity.this, NextActivity.class);
    startActivity(intent);
  }

另请注意:您不希望传递活动,也不希望将它们保存在变量中。如果这样做,会泄漏整个视图层次结构,并将很快耗尽ram。

确实如此-这是可行的。是的,我确实不喜欢使用类……除非我真的想接受任何类类型,而我几乎从来都不想这样做。添加extends活动约束效果很好。至于清单,我通常让Eclipse通过创建活动文件来实现这一点。还有一件事需要担心……我猜您在代码中并没有真正拼写错onPostExecute();如果您这样做了,您肯定应该对此进行研究。同意-尽管我没有传递对活动对象的引用,只是传递活动类,然后我只使用这些类来启动它们的新实例。当我这样做时,我遇到了一个运行时错误。在我切换到调用我有趣的异步任务子类之外的方法之前,我没有找到它,我认为这只是一个线程混乱。我会再试一次,看看我是否能让它像这样运行,因为如果我能,它就不会像意大利面条那样让人恶心,当然,这会让人大吃一惊。
protected void loadNextActivity(Class<? extends Activity> activityToLoad)
<activity android:name=".com.bla.bla.YourOtherActivity" />
  onPostExecute(Void result) {
    Intent intent = new Intent(SomeCoolActivity.this, NextActivity.class);
    startActivity(intent);
  }