草庐IT

java - 处理 Set<Foo> 的元素并使用流创建 Set<Bar>

我有一个Set的"hostname:port"对,然后我想创建一个Set.我这样试过:SetISAAddresses=StrAddresses.stream().map(addr->newInetSocketAddress(addr.split(":")[0],Integer.parseInt(addr.split(":")[1])));但这会在IntelliJ中产生以下错误:Incompatibletypes.RequiredSetbut'map'wasinferredtoStream:noinstance(s)oftypevariable(s)RexistsothatStreamc

java - <T extends A> void foo(T t) 和 void foo(A a) 的区别

假设A是一个接口(interface)。有什么区别publicvoidfoo(Tt){...}和publicvoidfoo(Aa){...}? 最佳答案 使用一个对象时没有区别。但想象一下,如果你有classBextendsA{...}和publicvoidf(Listlist){...};和publicvoidf(Listlist){...};对于第一个,您可以传递一个完全属于List类型的列表.对于第二个,您可以传递一个列表,其中包含扩展A的对象。.但是,对于第一个,您不能做同样的事情。所以换句话说,你无法通过List到第一种方

java - 如何获取 Foo<?> 对象的 <?> 值?

(这是我的previousquestion的后续)我有一个Foo对象,foo.Foo是一个接口(interface)。如何获取隐藏在后面的类型值?请注意,这不是微不足道的,因为foo例如可以是Bar类的对象,其中BarimplementsFoo,或一些实现接口(interface)的匿名类FloatFoo,其中FloatFooextendsFoo.我需要一个适用于所有情况的解决方案。提前致谢:) 最佳答案 使用反射是不可能的,因为Java泛型有TypeErasure的问题.在运行时,为通用类Foo定义的类型已被删除,因此对该类使用反

java - 警告开发人员在 java 中调用 `super.foo()`

假设我有这两个类,一个扩展另一个publicclassBar{publicvoidfoo(){}}publicclassFooBarextendsBar{@Overridepublicvoidfoo(){super.foo();//我想做的是警告用户调用父类(superclass)的方法foo如果他们没有在覆盖方法中,这可能吗?或者如果我将类类型传递给父类(superclass),是否有一种方法可以使用反射知道覆盖其父类(superclass)方法的方法调用原始方法?例如:publicabstractclassBar{publicBar(Classcls){Objectinstance

java - 泛型和通配符 : Java likes "new Foo<Bar<?>>"

好的,所以Java不允许以下内容:Foohello=newFoo();这是有道理的——毕竟,如果您只是想装箱/拆箱所有东西,泛型有什么意义呢?奇怪的是,Java确实允许这样做:Foo>howdy=newFoo>();诚然,这实际上完成了更多,但在某些时候,会有一个转换来获取Bar正在使用的任何内容。但是,如果Java可以接受一些特殊性,为什么它不允许这样做呢?:Foobonjour=newFoo();我问的唯一原因是我决定依赖“构造函数的类参数内的通配符”,并且非常想知道它背后的含义/意图。编辑:为了澄清我的问题,允许/禁止这些陈述的理由是什么?我知道“Java不允许在构造函数中使用通

java - 从 List<Foo> 到 Map<String, List<Foo>> : looking for a better implementation

让我给你看我的代码:Foo类publicclassFoo{Stringcode;Stringvalue;publicFoo(Stringcode,Stringvalue){super();this.code=code;this.value=value;}//getters/setters}主要方法(关注getFooMultiMapCode()方法):publicclassFooMain{publicstaticvoidmain(String[]args){Foofoo1=newFoo("100","foo1");Foofoo2=newFoo("200","foo2");Foofoo3=

java - "import foo.*"不应该也包括子包 "foo.bar.*"吗?

在学习Java时,我想到了许多教程中的一个对我来说相当令人困惑的特性。考虑示例教程中的以下两个导入:importjava.awt.*;importjava.awt.event.*;第一行显然导入了java.awt包,第二行导入了awt的子包。但是asterix不应该包含所有子包吗?因此,第一行应该可以解决问题-不需要第二行吗?如果不是:那么星号的真正用途/用途是什么?例如,在MySQL中使用SELECT*FROMfoo从表中选择所有字段,也许我愚蠢地认为这自然是这种情况。 最佳答案 不,包是作为一个整体。尽管按层次结构考虑它们通常很

Java 从 LocalDateTime Bar 中减去 LocalDateTime foo

这个问题在这里已经有了答案:Java8:DifferencebetweentwoLocalDateTimeinmultipleunits(11个答案)关闭6年前。我知道这可能是一个非常愚蠢的问题,但我想知道是否有办法从另一个减去本地日期时间,或者如果没有,将localDateTime转换为日期时间然后从那里减去?我需要能够计算出记录foo的开始和记录bar的开始(也是Foo的结束)之间的日期时差我是java的新手,为了简单起见,我希望能够将它保持在大致相同的布局中,而不是必须从秒等转换。如果添加和减去LocalDateTime不是一个选项,我知道一旦进入dateTime,我就可以使用以

java - foo 是什么意思?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion我看到很多人在Stackoverflow和其他东西上使用“foo”作为java中的方法名称或类名称。什么是福?它只是任何方法、类等的通用名称,还是它实际上意味着什么?为什么是foo?它仅适用于Java还是人们也将其用于其他语言?

java - Java 的类型参数通配符到底是什么意思? Foo 和 Foo<?> 之间的真正区别是什么?

对于通用接口(interface):publicinterfaceFoo{voidf(Tt);}两个字段的区别:publicclassBar{Foofoo1;Foofoo2;}是foo2吗是一个通用类型并且foo不是。自?是一个通配符(我认为这意味着任何类型)并且每种类型都是Object的子类型,那么我希望Foo和Foo在语义和句法上等价。但是,请检查以下内容:publicclassPuzzler{voidf(){Integeri=null;Foofoo1=null;foo1.foo(i);//ERRORFoofoo2=null;foo2.foo(i);//OKAYFoofoo3=nu