草庐IT

java - 匿名内部类(相对于非匿名内部类)有哪些优势?

考虑这个(匿名):speakBtn.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewview){mTts.speak(words.getText().toString(),TextToSpeech.QUEUE_ADD,null);}});对比这:(非匿名):classMyOuterClass{privateclassMyOnClickListenerimplementsOnClickListener{@OverridepublicvoidonClick(Viewview){mTts.speak

java - 从内部类访问外部类 : Why is it done this way?

所以我们大多数人都知道如何从内部类访问外部类。使用这些词的搜索会给出大量关于该主题的已回答问题。但我想知道的是为什么语法是这样的。例子:publicclassA{privateclassB{publicvoidc(){A.this.d();}publicvoidd(){System.out.println("Youcalledthed()intheBclass!Ohnoes!");}}publicvoidd(){System.out.println("You'vecalledd()!Go,you!");}}为什么是A.this.d()?看起来this是A类的静态字段,但是...*我很困

java - Java内部类的层次结构

我正在使用内部类的层次结构来表示应用程序中的一些数据,但我遇到了一条我根本无法理解的错误消息。我的代码可以归结为以下最小示例:publicclassA{publicclassBextendsA{}publicclassCextendsB{}}Javac(当然还有我的IDE)无法编译代码并出现以下错误消息:A.java:3:cannotreferencethisbeforesupertypeconstructorhasbeencalledpublicclassCextendsB{}^1error我没有在任何地方写this。没有比上面提供更多的代码,所以我假设javac已经生成了一些与内部

java - 为简单功能创建内部类是一种好习惯吗?

对于简单的内部类存在一些不同的看法,所以我想知道对于什么是好的以及何时使用私有(private)内部类是否存在普遍共识。这是我找到的一个示例,我认为没有必要为其创建内部类。这是好/坏的做法?privatestaticclassInternalCounter{intcount;publicInternalTabManager(){count=0;}publicintincrement(){returncount++;}}请注意,在这种特殊情况下,一个实例保留在周围的类中以跟踪计数。 最佳答案 是的,在这种情况下,它看起来确实没有必要,

java - Java 静态类背后的概念

考虑以下代码classA{staticclassB{inta=0;}publicstaticvoidmain(Stringargc[]){Bvar1=newB();Bvar2=newB();var1.a=5;var2.a=6;System.out.println(var1.a+"and"+var2.a);}}它输出5和6。静态成员只加载一次。但是输出与该声明相矛盾。所以静态类的概念肯定不同于静态数据成员。那么静态在静态类的情况下意味着什么 最佳答案 来自oracle的复制粘贴:静态嵌套类与类方法和变量一样,静态嵌套类与其外部类相关联

java - 内部类中的方法可以访问父类方法吗?

我不确定我的问题标题是否恰本地描述了我的情况,如果没有,我深表歉意!无论如何,假设我有以下代码片段(可见性如前所述):publicclassChildClassextendsParentClass{//morecodeprivatevoidmyMethod(){MyClassmine=newMyClass(){publicvoidanotherMethod(){//insertcodetoaccessamethodinParentClass}};}}anotherMethod()中的代码是否可以访问ParentClass中的protected方法?如果可以,如何实现?我试过类似...(

java - 从内部类对象获取外部类对象

简而言之,我正在尝试执行“classObject.getDeclaredClasses()”的逆运算。我有一个方法接收Class类型的对象.我想弄清楚它是否是一个内部类,如果是,我想访问周围类的对象实例。是否有用于此的智能API,或者我是否被迫进行一些字符串操作和解析? 最佳答案 您正在寻找Class.getDeclaringClass()方法:publicClassgetDeclaringClass()IftheclassorinterfacerepresentedbythisClassobjectisamemberofanoth

java - 使用 ProGuard 混淆时暴露内部类

我正在使用Ant任务使用ProGuard混淆一个库。当它们具有特定的注释(@ApiAll)时,我将保留特定的类名称及其方法名称,并且我要求保留InnerClasses属性:如果我检查映射输出文件,我可以看到我的内部类有注释,它的成员保持他们的名字未被混淆。但是,当我查看生成的jar文件时,我找不到该类。我错过了什么吗?为什么映射告诉我它保留了这个类,而实际上却没有? 最佳答案 您需要使用正确的表示法指定要保留内部类。用混淆器的说法,这意味着-keepclassmy.outer.Class$MyInnerClass。这里的关键是使用美

java - 推土机映射内部类

我需要使用推土机框架将类A映射到类C。publicclassA{privateStringfielda1;privateStringfielda2;publicStringgetFielda1(){returnfielda1;}publicvoidsetFielda1(Stringfielda1){this.fielda1=fielda1;}publicStringgetFielda2(){returnfielda2;}publicvoidsetFielda2(Stringfielda2){this.fielda2=fielda2;}}publicclassB{privateListc

Java:如何加载已经在类路径上的类(及其内部类)?

如何加载已经在类路径上的类、实例化它,以及实例化其中定义的任何内部类?如:publicclassTestClass{publicclassInnerClass{}} 最佳答案 内部类不能存在于父类之外。您需要先构造父类。没有反射(reflection),这看起来像:InnerClassinnerClass=newTestClass().newInnerClass();在反射中,需要在构造内部类时传入父类。ObjecttestClass=Class.forName("com.example.TestClass").newInstanc