草庐IT

java - 为什么我可以匿名子类化枚举而不是最终类?

这段代码:publicclassSandbox{publicenumE{VALUE{@OverridepublicStringtoString(){return"I'mthevalue";}};@OverridepublicStringtoString(){return"I'mtheenum";}}publicstaticvoidmain(String[]args){System.out.println(E.VALUE);}}打印:I'mthevalue但是,这段代码:publicclassSandbox{publicstaticfinalclassC{@OverridepublicS

java - 创建通用 Number 子类的零值

我如何通用地创建任意数字类型的零?这是一个玩具示例:一个将空数转换为零的函数。staticTzeroIfNull(Tvalue){returnvalue==null?0:value;}这不会编译,因为文字零是int类型,我需要将其转换为T类型。有没有可能做到这一点? 最佳答案 有可能做到这一点吗?并不真地。一方面,当值为null时,方法如何知道要返回哪个Number实现? 关于java-创建通用Number子类的零值,我们在StackOverflow上找到一个类似的问题:

具有泛型子类化的 Java 自动返回类型协变

我有两个如下所示的界面:interfaceParent{Tfoo();}interfaceChildextendsParent{}如果我有一个原始的Parent对象,调用foo()默认返回一个Number,因为没有类型参数。Parentparent=getRawParent();Numberresult=parent.foo();//thecompilerknowsthisreturnsaNumber这是有道理的。如果我有一个原始的Child对象,我希望调用foo()会按照相同的逻辑返回一个Integer。但是,编译器声称它返回一个Number。Childchild=getRawChi

java - 在子类中使用 super 关键字访问父类(super class)私有(private)字段

对于编码项目,我有一个包含嵌套类的类。嵌套类是同一个外部类的子类。目的是让外部类包含嵌套类的一些实例,它可以将这些实例传递给外部类的其他实例。嵌套子类允许外部类修改内容,而其父类(superclass)允许读取内容和调用一些方法。父类(superclass)对象因此被传递给其他对象,以链接链中的外部类对象。我的问题与访问修饰符有关。这是一个极简代码示例:abstractclassOuterClass{protectedclassNestedSuperClass{privateTdata;publicNestedSuperClass(Tt){this.data=t;}publicTget

java - 如何在抽象父类(super class)中定义常量/最终变量但在子类中分配它们?

我有一个抽象类,我想在其中声明最终变量。但是,我只想在子类的构造函数中为这些变量赋值。显然,这是不可能的,因为所有“最终字段都必须初始化”。我不明白为什么,因为无论如何都不可能实例化一个抽象类。我想要的是这样的:abstractclassBaseClass{protectedfinalinta;}classSubClassextendsBaseClass{publicSubClass(){a=6;}}当你实现一个接口(interface)时,我想象一些类似于方法的东西。然后你也被迫在(子)类中实现方法。 最佳答案 您应该在您的抽象类

java - 可变类作为不可变类的子类

我想要像这样的不可变Java对象(高度简化):classImmutable{protectedStringname;publicImmutable(Stringname){this.name=name;}publicStringgetName(){returnname;}}在某些情况下,对象不仅应该是可读的,而且是可变的,所以我可以通过继承来添加可变性:publicclassMutableextendsImmutable{publicMutable(Stringname){super(name);}publicvoidsetName(Stringname){super.name=nam

java - List<Double> 是 List< 的子类型吗? extends Number> 为什么?

这是我知道的:Double是Number的子类型和List不是List的子类型.List不是List的子类型因为你可以添加Cat至List但你不能用List做到这一点.List意味着这个列表可以存储Number类型的变量和Number子类型的变量。List意味着这个列表可以存储Double类型的变量。如果上面有什么不对请指正然后是ListList的子类型为什么? 最佳答案 你所有的项目都是正确的。DoubleisasubtypeofNumberandListisnotasubtypeofList.Listisnotasubtypeo

java - 为什么另一个包中的子类无法访问 protected 方法?

我在两个不同的包中有两个类:packagepackage1;publicclassClass1{publicvoidtryMePublic(){}protectedvoidtryMeProtected(){}}packagepackage2;importpackage1.Class1;publicclassClass2extendsClass1{doNow(){Class1c=newClass1();c.tryMeProtected();//ERROR:tryMeProtected()hasprotectedaccessinClass1tryMeProtected();//Noerro

java - 将父类成员仅限于其直接子类

假设我在java中有四个具有给定层次结构的类。classA{}classBextendsA{}classCextendsB{}classDextendsC{}据我了解,A类的所有可访问字段都将通过继承可供其所有子类使用。现在,如果我希望A类的几个字段仅对B类可用怎么办。在java中有什么方法可以限制父类的某些字段只能用于它的直接子类吗? 最佳答案 并不是说我会在生产中做这样的事情,但是给你:classA{privateinta=1;publicintgetA(){if(getClass().equals(A.class)||getC

java - 通过扫描文件系统查找直接和间接子类

我在编写算法来帮助我扫描文件系统并找到某个类的所有子类时遇到了问题。详细信息:我有一个应用程序在检索时使用nioFiles.walk()扫描外部应用程序我在读取文件时检查“extendsSuperClass”,如果单词退出后,我将类名添加到我的列表中,如下所示:Listsubclasses=newArrayList();Files.walk(appPath).filter(p->Files.isRegularFile(p)&&p.toString().endsWith(".java")).forEach(path->{try{Listlines=Files.readAllLines(p