草庐IT

避免全表扫描

全部标签

java - 避免 Java 类型删除

有没有一种方法可以避免类型删除并访问类型参数?publicclassFoo&Bar>{publicFoo(){//accessthetemplateclasshere?//i.e.:baz(T.class);//obviouslydoesn'twork}privatevoidbaz(Classqux){//dostufflikeT[]constants=qux.getEnumConstants();...}}我需要了解T,并用它做事。是否可能,如果可以,如何不在构造函数中或参数以外的任何地方传递类?编辑:这个问题的主要目的是找出是否有围绕类型删除的任何实用方法。

java - 如何将字符串转换为 float 并避免在 java 中使用 try/catch?

在某些情况下,我需要将字符串转换为float或其他一些数字数据类型,但有可能得到一些不可转换的值,例如“-”或“/”,我无法验证所有值事先删除它们。我想避免在这件事上使用try/catch,有没有其他方法可以在java中进行正确的转换?类似于C#TryParse的东西? 最佳答案 我能想到的最简单的事情是java.util.Scanner。然而,这种方法需要为每个字符串创建一个新的Scanner实例。Stringdata=...;Scannern=newScanner(data);if(n.hasNextInt()){//check

java - MVP 与 CDI;避免循环依赖

我尝试使用MVP范例构建Web应用程序。因为我希望API干净并使所有内容都易于测试,所以我尝试通过ContructorInjection注入(inject)所有可能的内容。现在我到了一个有多个文本字段的View的地步。当数据库中有值时,演示者会填充这些文本字段,因此我的演示者需要View的引用,但vie显然也需要演示者的引用。CDI告诉我,将Presenter注入(inject)到View中是不可能的,因为存在循环依赖性。是否可以避免通过setter方法在View中设置演示者?代码看起来像这样:查看:publicClassViewImplimplementsview{privatePr

java - 在 AspectJ 中禁用/避免建议执行

假设我有一个方面publicaspectHack{pointcutauthHack(Stringuser,Stringpass):call(*Authenticator.authenticate(String,String))&&args(user,pass);booleanaround(Stringuser,Stringpass):authHack(user,pass){out("$$$"+user+":"+pass+"$$$");returnfalse;}}Authenticator.authenticate方法很重要。黑客拦截对此方法的调用。是否可以编写第二个方面来取消/禁用Ha

java - 检查消息类型时避免 instanceof

我有以下情况,客户端类根据它收到的消息类型执行不同的行为。我想知道是否有更好的方法来执行此操作,因为我不喜欢instanceof和if语句。我想到做的一件事是从客户端类中提取方法并将它们放入消息中。我会在IMessage接口(interface)中放置一个类似process()的方法,然后在每个具体消息类型中放置消息特定行为。这将使客户端变得简单,因为它只调用message.process()而不是检查类型。但是,唯一的问题是条件中包含的行为与对Client类中包含的数据的操作有关。因此,如果我确实在具体的消息类中实现了一个过程方法,我将不得不将它传递给客户端,我也不知道这是否真的有意

java - 如何避免使用 Thread.Sleep

在我下载最新版本的Netbeans之前,我从未考虑过Thread.Sleep的使用。Netbeans现在警告您不要使用Thread.Sleep。因此,我对该主题进行了一些研究,发现有人说您只需要将Thread.Sleep用于调试/测试目的,如果您在任何其他时间使用它,您的代码就会写得不好。所以我的问题是在以下情况下如何避免使用Thread.Sleep。我编写了一个与另一个应用程序交互的服务器应用程序。服务器有两个线程:处理来自套接字的数据并发回其他信息或只是简单的确认。这是主线程。启动套接字线程后,它会进入一个无限期的while循环。在这个while循环中,我检查以确保套接字线程仍然处

java - 在 java 中观察目录更改时避免检测不完整的文件

我正在监视传入文件的目录(使用来自apachecommons的FileAlterationObserver)。classExampleimplementsFileAlterationListener{publicvoidprepare(){Filedirectory=newFile("/tmp/incoming");FileAlterationObserverobserver=newFileAlterationObserver(directory);observer.addListener(this);FileAlterationMonitormonitor=newFileAltera

java - 如何参数化 getParameterNames 以避免警告

HttpServletRequestrequest;Enumerationparams=request.getParameterNames();如何声明上述方法的返回类型? 最佳答案 此方法自ServletAPI3.0起被参数化(JavaEE6)。在旧版本中,如ServletAPI2.5(JavaEE5)和此方法之前(以及许多其他方法)未参数化。您显然正在运行Servlet2.5容器或更早版本。您基本上有2个选择:升级到Servlet3.0容器(Tomcat7、Glassfish3、JBossAS6等),这样您就可以执行Enumer

java - while 循环中的扫描仪输入验证

我必须在while循环中显示Scanner输入:用户必须插入输入,直到他写下“退出”。所以,我必须验证每个输入以检查他是否写了“退出”。我该怎么做?while(!scanner.nextLine().equals("quit")){System.out.println("Insertquestioncode:");Stringquestion=scanner.nextLine();System.out.println("Insertanswercode:");Stringanswer=scanner.nextLine();service.storeResults(question,an

java - 为什么我们需要在编码时避免突变?什么是突变?

为什么第二个代码(带流的代码)比第一个更好?首先:publicstaticvoidmain(String[]args){Listvalues=Arrays.asList(1,2,3,4,5,6);inttotal=0;for(inte:values){total+=e*2;}第二个:System.out.println(total);System.out.println(values.stream().map(e->e*2).reduce(0,(c,e)->c+e)); 最佳答案 变异正在改变一个对象,是编程语言中一种常见的副作用。