Articles of generics

在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”);

Java通用方法types参数

generics方法的显式types参数有问题。 我知道我可以做到这一点: Foo.<Bar>function(); 假设有一个 void <T> function() {…} 函数在Foo类中。 确切的问题是: 我想下载一些内容(Android与Ion ) 这些内容是相似的(Article,BlogArticle,…),都实现了一个ContentItem接口 目前下载看起来像这样: 新闻例如 private void downloadNews() { Ion.with(this) .load(URL_NEWS) .as(new TypeToken<List<Article>>(){}) .setCallback(new FutureCallback<List<Article>>() { @Override public void onCompleted(Exception e, List<Article> result) { // do something with result } }); } 如果我想下载博客文章,我只能更改url和文章类(对于BlogArticle)。 我试图做一个这样的通用函数: private <T extends ContentItem> void download(String url) { Ion.with(this) .load(url) .as(new […]

Proguard混淆和通用方法

我试图用ProGuard混淆Android应用程序。 这里我有一堂课 public class Book implements DBbinded 和一个通用的方法 private void storeDBObjects(ArrayList<? extends DBbinded> dbObjects) 此方法的调用在模糊处理之后抛出java.lang.ClassCastException:java.util.LinkedHashMap。 我应该写入proguard.properties来解决这个问题?

为什么当我尝试覆盖与Guice的通用绑定时出现错误? (TypeLiteral)

我想重写generics绑定,但我总是得到相同的“ No implementation was bound ”的错误。 我正在使用roboguice 3。 这里是我使用的代码示例: public interface IParser<I, O> {} public class Parser1 implements IParser<String, String> { IParser<String, String> mParser; @Inject public Parser1(IParser<String, String> parser) { mParser = parser; } } public class Parser2 extends Parser1 { @Inject public Parser2(IParser<String, String> parser) { super(parser); } } public class MyModule extends AbstractModule […]

正确的方式来扩展ParseObject并有一个通用的查询工厂

我需要一种方法来根据用户的select查询不同的parsing类。 我接触到这个问题如下。 请告知如何解决我所遇到的问题或者build议替代/更好的方法。 我有对应于Parse类的类A, B, C, … 他们非常相似。 所以,我创build了抽象类Q : public abstract class Q extends ParseObject { // some shared methods public abstract ParseQuery<? extends Q> getQuery(); } A, B, C, …每A, B, C, …被定义为: @ParseClassName("A") public class A extends Q { private static final A INSTANCE = new A(); @Override public ParseQuery<A> getQuery() { […]

为通用超types的types参数创buildTypeToken

我正在为两个依赖的generics模型实现一个Gson TypeAdapter 。 interface ModelA<T> {} interface ModelB<T> extends ModelA<List<T>> {} 为此,我需要获取TypeToken和TypeAdapter 。 通过做 Type type = ((ParameterizedType) type).getActualTypeArguments()[0]; TypeToken<?> token = TypeToken.get(type); TypeAdapter<?> adapter = gson.getAdapter(token); 对于任何给定types的AnyType和相关的适配器,我都得到一个types标记。 这就是我需要的ModelA ,但是对于ModelB我需要List<AnyType>的适配器,这是直接使用ModelA<List<AnyType>>的结果。 使用原始types令牌的原始types的接口传递 token.getRawType().getGenericInterfaces()[0] 我似乎只得到types擦除types的List 。 我怎样才能将这两个信息结合起来得到genericsList<AnyType>types或直接创build它? 作为input,它只有ModelB<AnyType>的types标记。 例 对于给定的行为,我实施了一个简单的testing,显示差异。 我已经从哈恩的答案,使用Gson内部非API类$Gson$Types的expected部分。 public class TypeTokenValidate { public interface ModelA<T> {} public interface ModelB<T> extends ModelA<List<T>> {} @Test public […]