草庐IT

java - Gradle 运行任务在控制台中运行时接受输入,但不作为 IDEA 运行配置

我有以下Java主类,我正在尝试使用IntelliJIDEA中的Gradle插件编译和运行它:packagecom.mikidep.bookshop;importjava.io.IOException;importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args)throwsIOException{Scannerin=newScanner(System.in);System.out.print("Inseriscitestoqui:");System.out.println(in.nextLine()

java - 首次连接后 Netty 服务器不接受连接

我在运行使用Netty的服务时遇到问题。它启动并正常工作,但只有一次。之后没有连接被接受(它们被立即丢弃)。我有多个监听器,每个监听器只接受一个连接,之后就不可能连接到同一个监听器。代码这是我的Listener.java:publicclassListener{/*...*/publicvoidrun(){//checkifthereisanysenseinrunningthislistenerif(this.address==null){this.logger.info("\"{}\"wasnotenabledforconnection,nopointtostartit.",this

java - 我如何才能将 ArrayList<String> 插入到接受 List<Integer> 的构造函数中?

这个问题在这里已经有了答案:Javagenericstypeerasure:whenandwhathappens?(7个答案)关闭6年前。我有这门课:publicclassTestSubject{publicTestSubject(Listlist){}}我正在像这样实例化它并且不知何故它正在工作,即使我正在插入ArrayList进入接受List的构造函数:Liststrings=newArrayList();strings.add("foo");Constructorconstructor=TestSubject.class.getConstructor(List.class);Te

java - 我怎样才能修改这个视线算法来接受穿过角落的光线?

我正在研究一种基于Theta*的寻路算法,它是A*的一种变体,它提供了一个很好的寻路系统,它不受网格的限制,即使地形/障碍物是基于网格模式的。该系统需要一种视线算法来确定特定路径是否被阻挡。我找到了this非常有用的视线算法,我已经在我的代码中成功地实现了它。不幸的是,它认为以下是无效路径:但是,出于我的目的,我希望这样的路径被认为是有效的。我试图通过使用基本y=mx+b公式检测点是否在线上来修改算法,但算法的不一致使我无法依赖这样的系统。是否有任何有效的方法来修改此算法以允许这样的路径?还有另一种算法会更好吗?请记住,路径的起点和终点不一定必须限制在网格中,因此所有点都使用doubl

java - 调用接受 Class<T> 并返回 T 的泛型方法时,如何返回特定类型的列表?

我正在使用这个签名从一个库中调用一个方法:publicTget(Classc)我想要一个List作为返回值。但是这样调用它不会编译(“无法从参数化类型中选择”):ListmyClasses=get(List.class);这会编译,但会给出警告:ListmyClasses=get(List.class);警告说“未经检查的分配”。我怎样才能避免此警告并避免转换我的名单? 最佳答案 您在这里使用的是泛型,因此列表中项目的基础类型在运行时已被删除,编译器知道它无法在编译时为您检查它,因此出现警告。如果您在这里使用通用类型,您将无法避免警

Java泛型如何在泛型参数中接受任何派生类型

在下面两行代码中HashMap>map=newHashMap>();map.put(1,newTreeSet());第2行:类型HashMap中的方法put(Integer,capture#1-of?extendsCollection)不适用于参数(int,TreeSet)第1行:没有错误。为什么相同的泛型类型(TreeSet)在第1行中允许但在第2行中不允许?编辑:使用super而不是extends,为什么不允许以下内容。HashMap>map=newHashMap(>());但是HashMap>map=newHashMap();map.put(1,newTreeSet());允许

java - 用一种类型参数化的方法接受两种类型

可能我遗漏了一些东西,也许我的假设是错误的,但我认为当我声明类型为T的参数化方法时,无论该类型有多少变量,它仍然是相同的类型。但我看到这个编译并且它反对我的观点。staticvoidf(Ta,Tb){}publicstaticvoidmain(String[]args){f(Integer.MIN_VALUE,"...");}因此,如果我的方法使用一种类型进行参数化,并且我在两个参数中使用该一种类型,为什么它允许我发送具有两种完全不同类型的两个对象?我猜这归结为将T视为Object? 最佳答案 尽管Integer和String是两种

Java - TreeSet 接受重复项

我在使用TreeSet时遇到了一些问题:为什么这个接受重复项?我认为TreeSets通过比较器检测到它们,并自动删除它们。请帮助我,我是Java和StackOverflow的新手。importjava.util.Comparator;importjava.util.Set;importjava.util.TreeSet;publicclassSortedSongs{privateSetsongs;publicSortedSongs(){Comparatorcomp=(Songc1,Songc2)->c1.toString().compareTo(c2.toString());songs

java - Interface Annotation 不接受 application.properties 值

我开发了一个简单的注释界面@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public@interfaceCustomAnnotation{Stringfoo()default"foo";}然后我测试它并注释一个类@CustomAnnotationpublicclassAnnotatedClass{}并使用方法调用它publicvoidfoo(){CustomAnnotationcustomAnnotation=AnnotatedClass.class.getAnnotation(CustomAnnotation.

java - 当参数接受 Collection<X<?>> 时无法输入

这个问题来自javax.validation.ConstraintViolationException的构造函数的类型.它接受Set>作为参数。虽然很容易获得一组ConstraintViolation,其中X是具体类型,但似乎不可能从任何类型良好的API获得一组“ConstraintViolation”。如果不使用一些复杂的转换,就不可能将前者转换为后者。(转换为Set>,然后转换为Set>。)那么你们认为API错误还是我错了(为什么)? 最佳答案 API错误。除非实现需要添加新的ConstraintViolations到集合,它应