Tag: java

为什么在RecyclerView.Adapter的onBindViewHolder中添加一个OnClickListener被认为是不好的做法?

我有一个RecyclerView.Adapter类的下面的代码,它工作正常: public class MyAdapter extends RecyclerView.Adapter<MyAdapter.Viewholder> { private List<Information> items; private int itemLayout; public MyAdapter(List<Information> items, int itemLayout){ this.items = items; this.itemLayout = itemLayout; } @Override public Viewholder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(itemLayout, parent, false); return new Viewholder(v); } @Override public void onBindViewHolder(Viewholder holder, final int position) { Information item = […]

Kryo序列化库:是用于生产吗?

Kryo是一个非常新颖有趣的Java序列化库,也是thrift-protobuf基准testing中速度最快的一个。 如果你使用过Kryo,它是否已经达到了足够的成熟度,可以在生产代码中试用? 更新(10/27/2010):我们正在使用Kryo,虽然尚未投入生产。 详情请参阅下面的答案。 更新(3/9/2011):更新到最新的jackson和Kryo​​图书馆显示,jackson的二元微笑系列化是相当有竞争力的。

如何从List <>投射ArrayList <>

有人可以解释我为什么我不能将第一种方法将List<>为ArrayList<> ,而我使用第二种方法呢? 谢谢。 第一种方法: ArrayList<Task> tmp = ((ArrayList<Task>)mTrackytAdapter.getAllTasks(token)); 第二种方法: ArrayList<Task> tmp = new ArrayList<Task>(mTrackytAdapter.getAllTasks(token));

Java中的线程安全单例

关于Singletons的维基百科文章提到了一些线程安全的方法来实现Java中的结构。 对于我的问题,让我们考虑具有冗长的初始化过程的单身人士,并一次由许multithreading共享。 首先,这个未提到的方法是线程安全的,如果是的话,它是同步的? public class Singleton { private Singleton instance; private Singleton() { //lots of initialization code } public static synchronized Singleton getInstance() { if(instance == null) { instance = new Singleton(); } return instance; } } 其次,为什么下面的实现线程安全和初始化懒? 如果两个线程同时进入getInstance()方法,会发生什么? public class Singleton { private Singleton() { //lots of initialization code } private static class SingletonHolder […]

Java – 在try / catch中执行try / catch是不好的做法吗?

我有一些代码,如果发生exception,我想执行。 但是那个代码也会产生一个exception。 但是我从来没有见过人们在另一个尝试/抓住里面试一试。 是我做的不好的做法,也许有这样做的一个更好的方法: Uri uri = Uri.parse("some url"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); try { startActivity(intent); } catch (ActivityNotFoundException anfe) { // Make some alert to me // Now try to redirect them to the web version: Uri weburi = Uri.parse("some url"); try { Intent webintent = new Intent(Intent.ACTION_VIEW, weburi); startActivity(webintent); } catch […]

为什么这样deviseJava 8'Collector'类?

我们知道Java 8引入了一个新的Stream API, java.util.stream.Collector是定义如何聚合/收集数据stream的接口。 但是,收集器接口是这样devise的: public interface Collector<T, A, R> { Supplier<A> supplier(); BiConsumer<A, T> accumulator(); BinaryOperator<A> combiner(); Function<A, R> finisher(); } 为什么它不是像下面这样devise的? public interface Collector<T, A, R> { A supply(); void accumulate(A accumulator, T value); A combine(A left, A right); R finish(A accumulator); } 后者更容易实现。 devise它作为前者的考虑是什么?

如何在eclipse上显示完整的堆栈跟踪?

我正在使用Eclipse来debuggingJava应用程序。 在代码的某处我得到一个exception和堆栈跟踪: Caused by: java.io.EOFException: The connection has been reset while reading the header at com.gemstone.gemfire.internal.cache.tier.sockets.Message.fetchHeader(Message.java:583) at com.gemstone.gemfire.internal.cache.tier.sockets.Message.readHeaderAndPayload(Message.java:599) at com.gemstone.gemfire.internal.cache.tier.sockets.Message.read(Message.java:542) at com.gemstone.gemfire.internal.cache.tier.sockets.Message.recv(Message.java:1029) at com.gemstone.gemfire.cache.client.internal.AbstractOp.attemptReadResponse(AbstractOp.java:158) at com.gemstone.gemfire.cache.client.internal.AbstractOp.attempt(AbstractOp.java:363) at com.gemstone.gemfire.cache.client.internal.ConnectionImpl.execute(ConnectionImpl.java:229) at com.gemstone.gemfire.cache.client.internal.pooling.PooledConnection.execute(PooledConnection.java:321) at com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.executeWithPossibleReAuthentication(OpExecutorImpl.java:646) at com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:108) … 11 more 我怎么得到整个堆栈,而不是… 11 more ?

IllegalStateException:<MyFragment>当前不在FragmentManager中

我知道这听起来像是FragmentStatePagerAdapter IllegalStateException的重复:<MyFragment>目前不在FragmentManager中,但他的解决scheme与我的情况无关。 我很less遇到以下崩溃: java.lang.RuntimeException:无法暂停活动{MyActivity}: … 由于:java.lang.IllegalStateException:Fragment MyFragment {40648258 id = 0x7f070051}目前不在android.support.v4.app.FragmentManagerImpl.putFragment(MT:516)的FragmentManager中android.support.v4.app.FragmentStatePagerAdapter .saveState(MT:185)在android.support.v4.view.ViewPager.onSaveInstanceState(MT:881) … 在android.app.Activity.onSaveInstanceState(Activity.java:1138)com.android.internal.policy.impl.PhoneWindow.saveHierarchyState(PhoneWindow.java:1522)android.view.View.saveHierarchyState(View.java:6238) )在MyActivity.onSaveInstanceState(MT:336)处的android.support.v4.app.FragmentActivity.onSaveInstanceState(MT:480) 这似乎是我从FragmentStatePagerAdapter无法理解的奇怪的代码: for (int i=0; i<mFragments.size(); i++) { Fragment f = mFragments.get(i); if (f != null) { if (state == null) { state = new Bundle(); } String key = "f" + i; mFragmentManager.putFragment(state, key, f); } } 它看起来像适配器从mFragments获取我的Fragment ,但不能将其状态添加到FragmentManager 。 […]

所有包含的字符集,以避免“java.nio.charset.MalformedInputException:input长度= 1”?

我用Java创build了一个简单的wordcount程序,通过目录的文本文件读取。 但是,我不断收到错误: java.nio.charset.MalformedInputException: Input length = 1 从这行代码: BufferedReader reader = Files.newBufferedReader(file,Charset.forName("UTF-8")); 我知道我可能会得到这个,因为我使用了一个Charset ,它没有在文本文件中包含一些字符,其中一些包含了其他语言的字符。 但我想包括这些字符。 后来我在JavaDocs上了解到Charset是可选的,只用于更有效的读取文件,所以我将代码改为: BufferedReader reader = Files.newBufferedReader(file); 但是有些文件仍然会抛出MalformedInputException 。 我不知道为什么。 我想知道是否有一个全包的Charset ,将允许我阅读文字文件与许多不同types的字符 ? 谢谢。

Spring:使用构build器模式创build一个bean

我使用ektorp连接到CouchDB。 构buildektorp HttpClient实例的方法是使用构build器模式: HttpClient httpClient = new StdHttpClient.Builder() .host("mychouchdbhost") .port(4455) .build(); 我对Spring比较陌生。 请咨询我如何在我的上下文中configuration一个HttpClient来通过Builder创build它。 一种方法是使用@Configuration 。 还有其他的select吗?