gpt4 book ai didi

java - Java 中的泛型类参数

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:00:32 27 4
gpt4 key购买 nike

所以我在我的 Android 应用程序中到处传递 Activities 和 Intents 来处理线程(我确信有一个更好的范例,因为我的代码开始变得令人讨厌的意大利面条式 - 通常是一个标志我做的事情不对)。

但无论如何,我正在尝试做这样的事情:

public class SomeCoolActivity extends Activity {
private class DoSomeTaskThatInvolvesEitherTheNetworkOrASleepStatementWithoutScrewingUpTheUiThread extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
// Do something useful on a non-UI thread...
return null;
}

@Override
protected void onPostExecute(Void result) {
// Now that's done, I need to progress to the next activity. If I do that here,
// I will get errors. So instead, I will call a method on my parent activity class:
loadNextActivity(NextActivity.class);
}
}

protected void loadNextActivity(Class<Activity> activityToLoad) {
startActivity(new Intent(this, activityToLoad));
}
}

但这不起作用,因为它告诉我有一个错误,即

NextActivity.class

不是 Activity 。是的,显然它不是完全相同的类,但人们希望我能够传入任何派生自 Activity 的类(包括 NextActivity),但不能传入任何不是的类(如果我定义 loadNextActivity,它实际上工作正常作为

protected void loadNextActivity(Class<?> activityToLoad)

但这不太理想,因为我可以传递任何我想要的东西,也许不是 Activity 的东西……毕竟这是 Java,而不是 Ruby)。而且,如果它只允许我通过一门课......这到底有什么好处?

那么我该如何实现呢?

最佳答案

你可以这样写通配符:

protected void loadNextActivity(Class<? extends Activity> activityToLoad)

使用 Class<?> 不是好的做法.您不会知道类标记的确切类型。嗯,尝试像我上面写的那样使用通配符为您的方法定义全局行为。

顺便说一句,请确保您添加到 Manifest.xml 中的每个 Activity 文件,例如:

<activity android:name=".com.bla.bla.YourOtherActivity" />

关于java - Java 中的泛型类参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13631913/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com