草庐IT

java inputstream 打印控制台内容

sock=newSocket("www.google.com",80);out=newBufferedOutputStream(sock.getOutputStream());in=newBufferedInputStream(sock.getInputStream());当我尝试打印出“in”内的内容时,如下所示BufferedInputStreambin=newBufferedInputStream(in);intb;while((b=bin.read())!=-1){charc=(char)b;System.err.print(""+(char)b);//Thisprintsou

java - &-运算符和顺序的泛型歧义

我有一个奇怪的Java泛型歧义行为,我无法解释:类中的这3个方法:publicstaticvoidmethod(Eval){}publicstaticvoidmethod(Eval){}publicstaticvoidmethod(Eval){}编译正常。但那些不是(违反歧义):publicstaticvoidmethod(Eval){}publicstaticvoidmethod(Eval){}publicstaticvoidmethod(Eval){}(ClassA、ClassB、ClassC都是完全独立的接口(interface)!) 最佳答案

java - Java 动态代理与常规代理的有用性

我需要一些建议,以了解动态代理在哪些情况下比常规代理更有用。我付出了很多努力来学习如何有效地使用动态代理。在这个问题中,抛开像AspectJ这样的框架基本上可以执行我们试图用动态代理实现的一切,或者说,例如,CGLIB可以用来解决动态代理的一些缺点。用例装饰器-例如,对方法调用执行日志记录,或缓存复杂操作的返回值维护契约(Contract)-也就是说,确保参数在可接受的范围内并且返回类型符合可接受的值。适配器-在某处看到一些聪明的文章,描述了它的用处。不过我很少遇到这种设计模式。其他人呢?动态代理优势装饰器:记录所有方法调用,例如,publicObjectinvoke(Objectta

java - 多次调用 Method/Field.getAnnotation(Class) 与在 Map 中预缓存此数据的性能

我想知道是否有任何关于重复调用(在Java中)Method.getAnnotation(Class)和Field.getAnnotation(Class)的性能的比较/研究方法,而不是存储(在程序启动时)具有类元数据信息的预计算Map并稍后重复查询。哪一个可以提供最佳的运行时性能?这个性能在Java5、6和7下是否相同? 最佳答案 Map应该是更可取的方法。主要问题不仅与缓存有关。还能改善多线程争用。在Method.getAnnotation()中,它调用同步私有(private)方法declaredAnnotations()。同步

Java 泛型 : actual argument T cannot be converted to int by method invocation conversion

我有这样的代码://ThisclasscannotbechangedclassVendorApi{staticvoidfunc1(charx){}staticvoidfunc1(intx){}staticvoidfunc1(floatx){}staticvoidfunc1(doublex){}}classMain{staticvoidmy_func(Targ){//muchofcode,whichusesT//...VendorApi.func1(arg);}publicstaticvoidmain(Stringargs[]){//callmy_funcforeachtype(char

Java 图形用户界面 : about getContentPane( ) method and content

在这段代码中:JLabelemptyLabel=newJLabel("");emptyLabel.setPreferredSize(newDimension(175,100));frame.getContentPane().add(emptyLabel,BorderLayout.CENTER);我可以看到它创建了一个新标签并将其添加到JFrame对象frame中。但我想了解getContentPane()做了什么,为什么需要它?我读了thisAPI但我还是不明白。 最佳答案 每个Swing顶级容器(和JInternalFrame)都

java - 获取调用者方法 (java.lang.reflect.Method)

我想获取调用方法java.lang.reflect.Method。不是方法的名称。这是一个如何获取调用者类的示例。//findthecallersclassThreadt=Thread.getCurrentThread();Classklass=Class.forName(t.getStackTrace()[2].getClassName());//dosomethingwiththeclass(likeprocessingitsannotations)...仅供测试! 最佳答案 如果它只是为了测试,那么这可能会起作用。它假定类文件

Java 反射 API : Invoking a method without parameters

我要调用的方法(我知道它是公共(public)的,但我需要使用反射):publicbyte[]myMethod()我得到这样的Method对象并且m包含myMethod()(我用调试器检查过)Methodm=Class.forName(MyClass.class.getName()).getDeclaredMethod("myMethod");最后我需要调用m并将结果传递给一个对象:byte[]myBytes=null;m.invoke(myBytes);没有抛出异常,但myBytes保持为空......我也尝试了以下但没有成功:m.invoke(myBytes,(Object[])n

java - 泛型 hell : hamcrest matcher as a method parameter

所以,让我们有一个字符串列表和一个接受Hamcrest匹配器并返回matches()的结果的函数。提供的匹配器的方法:publicbooleanmatchIt(finalMatcher>matcher){finalListlst=obtainListFromSomewhere();returnmatcher.matches(lst);}到目前为止一切顺利。现在我可以轻松调用:matchIt(empty());matchIt(anything());matchIt(hasItem("item"));matchIt(everyItem(equalToIgnoringCase("item")

JAVA :Shutdown Signal: channel error; protocol method: #method<channel.close>(reply-code=406, reply

JAVA报错ShutdownSignal:channelerror;protocolmethod:#method(reply-code=406,reply-text=PRECONDITION_FAILED-unknowndeliverytag0,class-id=60,method-id=80)简介:在项目开发中,有时可能会遇到“ShutdownSignal:channelerror;protocolmethod:#method(reply-code=406,reply-text=PRECONDITION_FAILED-unknowndeliverytag0,class-id=60,metho