草庐IT

extended-precision

全部标签

java - 从使用 <T extends TestClass> 泛化的通用方法返回 this

为什么我不能在Java中这样做:publicclassTestClass{publicTtest(){returnthis;//errorhere}}据我了解,this将始终是某个扩展TestClass的类的实例,那么为什么编译器不允许上面的代码?即使我将扩展TestClass,this的类型仍然适合extendsTestClass。我收到以下错误:Error:(4,16)java:incompatibletypes:TestClasscannotbeconvertedtoT 最佳答案 假设你有SubTestClassextends

<T extends A<T>> 和 Inheritance 形式的 Java 泛型

我对Java泛型有一个棘手的问题,或者我可能只见树木不见森林。我有如下所示的三个类A、B和C。abstractclassA>{abstractTsefl();};abstractclassB>extendsA{};classCextendsB{@OverrideCsefl(){returnthis;}}后来我有不同版本的B,也有不同版本的C。此外,我有一个功能测试应该接受B的列表(或其表亲之一)。或者一般来说,它应该接受从A继承的任何元素列表。不幸的是,我需要知道函数主体中列表元素的类型,即最上面的类型a.self可以返回(或类型T)。功能测试如下:static>voidtest(Li

java - boolean containsAll(Collection<?> c) vs boolean addAll(Collection<? extends E> c); 的设计决策在集合框架中

这个问题在这里已经有了答案:GenericCollection(10个答案)关闭9年前。为什么booleancontainsAll(Collectionc);每种类型都允许集合框架的方法?。但是booleanaddAll(Collectionc);允许?extendsE。所以,我写了一个程序来澄清。这是我的程序publicclassContainAllTest{//takeServiceDtoArrayListresultList=newArrayList();voidTest(){ServiceDtoserviceDto=newServiceDto();serviceDto.setN

java - "? extends ParentClass"使只读?

在下面的Java代码中,我创建了一个列表nums。我可以在声明期间分配另一个列表。但是除了null之外不能添加新项目。那么,这是否意味着nums是只读的?为什么?是否可以在该列表中添加新项目?Listints=newArrayList();ints.add(1);ints.add(2);Listnums=ints;nums.add(3.14);//Generateserrornums.addAll(ints);//Generateserrornums.add(null);//worksSystem.out.println(nums.get(0));//works我已经完成了这个link

Java 错误 : possible loss of precision

我正在制作一个加密任何类型文件的小型Java程序。我这样做的方式如下:我打开输入文件,在与该文件大小相同的字节数组中读取它,然后进行编码,然后将整个数组写入名为输出的.dat文件。数据。为了索引字节数组,我使用了一个int类型的变量。代码:for(inti:arr){if(i>0){arr[i]=arr[i-1]^arr[i];}}'arr'是一个与输入文件大小相同的字节数组。我得到的错误:CodingEvent.java:42:error:possiblelossofprecisionarr[i]=arr[i-1]^arr[i];(箭头指向^运算符)必需:字节发现:整数怎么了?你能帮

java.util.Comparator.naturalOrder 采用 <T extends Comparable<? super T>> 并返回一个 Comparator<T> - 为什么?

(如果这是重复的,请指出正确的答案!我搜索并阅读了几个(>5)个相关问题,但似乎没有一个是正确的。还查看了泛型常见问题解答和其他来源...)当一个集合类接受一个比较器时,它应该具有Comparator类型显然是正确的做法。对于您的参数化类型T.你可以看到很多地方,例如TreeMap.好的。我的问题是使用Comparator.naturalOrder()在TextendsComparable上参数化但返回Comparator.我试图在我的集合类中有一个字段,它包含用户指定的比较器或Comparator.naturalOrder比较器。我无法让它工作。我的所有相关问题是:怎么样Compar

Java:声明具有两个相关泛型类型的映射 (<T> Map<Class<? extends ClassA<T>>,Class<? extends ClassB<T>>>)

是否可以声明一个映射,将特定子类的键映射到特定子类的值,但确保两个类共享相同的类型参数?对于背景:ClassA和ClassB都实现了公共(public)资源的行为publicabstractclassClassA{publicabstractTgetResource();}publicabstractclassclassB{publicabstractvoidconsoumeResource(Tresource);}我想从ClassA和ClassB的实现进行映射,并确保只有“兼容”对可以放在一个条目中。 最佳答案 另一种方法是提供您

java - Sonar 标志 "Bad practice": Usage of GetResource in XYZ may be unsafe if class is extended

Sonar在我们的Java项目中指示这个错误。欢迎任何有关安全编程的建议!URLurl=getClass().getResource("/myWonderfulResource.txt");if(url==null){thrownewIllegalStateException("Filenotfound:/myWonderfulResource.txt");} 最佳答案 将类设为final,使其无法扩展。警告是为了防止扩展类(可能)尝试使用不存在的资源。 关于java-Sonar标志"B

java - 为什么允许 `T extends String`但给出警告?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:@SuppressWarningsfor“extendsString”为什么TextendsString被允许但给出警告?ThetypeparameterTshouldnotbeboundedbythefinaltypeString.FinaltypescannotbefurtherextendedpublicclassCar我知道什么是final我知道它是有效的,因为T的唯一可能值可以是String我想知道警告。

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到第一种方