Articles of generics

Android支持注释 – 如何使用generics列表使用IntDef / StringDef(Typedef Annotations)?

最近我开始使用android的支持库IntDef / StringDef(Typedef Annotations)。 我按照Android工具项目站点中的文档进行操作,无法在那里或任何其他相关教程中find我如何使用带有generics数组的IntDef / StringDef typedef注释。 例如,假设我有以下代码段: public static final String MEDIA_IMAGE = “image”; public static final String MEDIA_TEXT = “text”; public static final String MEDIA_LINK = “link”; public static final String MEDIA_AUDIO = “audio”; public static final String MEDIA_VIDEO = “video”; public static final String MEDIA_VOICE = “voice”; @StringDef ({MEDIA_IMAGE, MEDIA_TEXT, MEDIA_LINK, […]

genericstypes和多态性

我有BaseFragment : public abstract class BaseFragment extends Fragment implements BaseMvpView { private BasePresenter presenter; protected void syncLifeCycle(BasePresenter presenter) { this.presenter = presenter; this.presenter.onCreate(); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); //noinspection unchecked presenter.onAttachView(this); //it works with a warning } @Override public void onResume() { super.onResume(); presenter.onResume(); } @Override public void […]

Kotlin属性:“属性的types参数必须在其接收器types中使用”

我有以下简单的Kotlin扩展function: // Get the views of ViewGroup inline val ViewGroup.views: List get() = (0..childCount – 1).map { getChildAt(it) } // Get the views of ViewGroup of given type inline fun ViewGroup.getViewsOfType() : List { return this.views.filterIsInstance() } 此代码编译并正常工作。 但是,我希望函数getViewsOfType是一个属性,就像views 。 Android Studio甚至建议它。 我让AS进行重构,它会生成以下代码: inline val ViewGroup.viewsOfType: List get() = this.views.filterIsInstance() 但是这段代码没有编译。 它会导致错误:“属性的types参数必须在其接收器types中使用” 这是什么问题? 搜索有关此错误的帮助似乎不会导致答案。

android.util.Pair将String 作为androidTest中的参数保存,但在(单元)测试中保持为null

我想unit testing一个UtilsClasstypes的静态方法,它返回一个Pair 。 在这个方法中,我将一对String []注入其构造函数中,例如。 final Pair pair = new Pair(new String[] {“Hello”, “World”}, new String[] {“£33”, “£44”}); 并期望返回此对象。 当我对这个方法进行unit testing时,我得到一个非空的Pair对象,但其字段first = null , second = null 。 当我在Instrumentationtypes测试中运行相同的测试代码时,将正确填充字段。 我可以看到,在后一种情况下,构造函数public Pair(F first, S second) {输入调试点的位置和字段设置,但不在Unit测试中。 我正在寻找解释为什么会这样,如果我应该避免首先在代码中传递String[]作为构造函数params。

是否可以包裹generics类?

我正在尝试创建public class MyClass implements Parcelable 。 我在实现Parcelable遇到了麻烦。 是否可以创建一个实现Parcelable的generics类? (注意T是有界的,所以它也必须实现Parcelable )。 我遇到的问题是Parcelable接口需要一个静态variables: public static final Parcelable.Creator CREATOR 。 因此我无法做public static final Parcelable.Creator<MyClass> CREATOR MyParcelable public static final Parcelable.Creator<MyClass> CREATOR因为MyParcelable是非静态的。 安德烈

在java Android中为自定义Dialog创建一个通用类

我的应用程序显示了许多自定义对话框,如是/否或接受/取消决定,当我编码时,我意识到有相当多的代码重复,遵循相同的架构。 我想构建一个通用类,但我不知道该怎么做,或者更确切地说,我必须要做的正确方法(接口,抽象类,inheritance,静态类……) 这是我目前的课程: public class DialogTwoOptions extends Dialog { TextView title_tv; // Button yes_btn, no_btn; public DialogTwoOptions(Context context) { super(context); setContentView(R.layout.dialogo_sino); // a simple layout with a TextView and Two Buttons title_tv = (TextView) findViewById(R.id.dialogo_titulo_sino); // yes_btn = (Button) findViewById(R.id.dialogo_aceptar); // no_btn = (Button) findViewById(R.id.dialogo_cancelar); View v = getWindow().getDecorView(); v.setBackgroundResource(android.R.color.transparent); } public void quitDialog(View v) […]

将嵌套的Class <MyInterface >作为Android中的parameter passing

我试图在Retrofit上创建一个包装器来抽象我的服务实现。 到目前为止,我已经使编译器成功编译: package com.example.spark.testapp.services; import com.example.spark.testapp.services.apis.Get; import com.example.spark.testapp.services.apis.Post; import com.example.spark.testapp.services.utils.*; import com.example.spark.testapp.services.utils.Error; import java.util.List; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; import retrofit2.Retrofit; public class ServiceLayer { public void performGet(String url, final Class<Get> clazz, com.example.spark.testapp.services.utils.Callback callback) { Retrofit retrofit = new Retrofit.Builder().baseUrl(“”).build(); Get service = retrofit.create(clazz); //Pass authentication token here Call t = service.get(url, “”); executeCallback(callback,t); […]

理解类

我遇到了这段代码: public class RestfulAdage extends Application { @Override public Set<Class> getClasses() { Set<Class> set = new HashSet<Class>(); set.add(Adages.class); return set; } } 我不明白Class意思。

在当前情况下无法访问

我有以下代码 public abstract class BaseAdapter extends ArrayAdapter { public BaseAdapter(Context context, int resource, Collection collection) { // typical constructor logic } // some other custom defined methods public static class ViewHolder { // custom defined logic } } public class ModelAdapter extends BaseAdapter { public ModelAdapter(Context context, int resource, Collection collection) { super(context, resource, collection); […]

通用OR代替AND

是否可以通用参数化接受EAEER ClassA或InterfaceB的方法? 由于|不编译 伪代码 public void orDoer(T someData){ // … } 即不是写多个方法签名,我希望这个方法接受Number或CharSequence作为参数 应该使用Number或CharSequenceparameter passing orDoer(new Integer(6)); int somePrimitive = 4; orDoer(somePrimitive); orDoer(“a string of chars”);