Tag: 内部类

如何在java中的另一个类中使用嵌套类?

我有一些情况,我想在另一个类中使用另一个类的内部类。 喜欢… public class ListData { public static class MyData { public String textSongName, textArtistName, textDuration, textDownloadPath, textSongSize, textAlbumName, textUrl; public boolean enable; public MyData(String songName, String artistName, String duration, String downloadPath, String songSize, String albumName, String url, boolean e) { textSongName = songName; textArtistName = artistName; textDuration = duration; textDownloadPath = downloadPath; textSongSize = […]

内/匿名课程的最佳实践

匿名类和静态内部类的最佳实践(设计和性能)是什么? 我个人认为静态内部类提供了更好的封装,并且应该提供更好的性能,因为他们无法访问类外的最终变量。 但我从来没有真正质疑这一点。 我发现了一篇关于此的post,但我觉得它实际上并没有回答这个问题,只是人们对此的个人想法。

由于某些中间构造函数调用,没有可用的PerfHelper类型的封闭实例

考虑以下代码: class abstract Normal1 extends Something { } class Outer { class abstract Inner extends Normal1 { } } class General extends Outer.Inner // Problem occurs at this { } 我得到的错误是“由于一些中间构造函数调用,没有可用的PerfHelper类型的封闭实例” 我的问题是我可以像上面那样扩展内部类吗?

在Java中使用相同的内部类名和对象名

在下面的代码片段中,可能看起来它应该发出一些编译错误,但它不会: class Outer { public static class Inner { static String obj = “Inner”; } static Optional Inner = new Optional(); //The (inner) class name and the object name are same. } class Optional { String obj = “Optional”; } public class Main { public static void main(String[] args) { System.out.println(Outer.Inner.obj); //Refers to the string […]

为什么使用方法本地抽象内部类

可以与方法本地内部类一起使用的合法修饰符之一是abstract。 例如: public class Outer { public void method(){ abstract class Inner{ } } } 你有实际使用它的情况吗? 你必须知道SCJP考试。

无法分配最终的局部变量,因为它是在封闭类型中定义的

ratingS = new JSlider(1, 5, 3); ratingS.setMajorTickSpacing(1); ratingS.setPaintLabels(true); int vote; class SliderMoved implements ChangeListener { public void stateChanged(ChangeEvent e) { vote = ratingS.getValue(); } } ratingS.addChangeListener(new SliderMoved()); 如果我写上面的代码Eclipse告诉我这个: 不能引用在不同方法中定义的内部类中的非最终变量投票 但如果我在int vote之前添加final ,它会给我这个错误: 无法分配最终的局部变量投票,因为它是在封闭类型中定义的 那么,如何解决?

内部类的构造函数引用在运行时因VerifyError而失败

我正在使用lambda ctx -> new SpectatorSwitcher(ctx)为内部类构造函数创建供应商。 IntelliJ建议我将它改为SpectatorSwitcher::new 。 SpectatorSwitcher是我正在使用的类的非静态内部类。建议的代码编译得很好(使用maven)但我在执行时得到以下VerifyError: Exception in thread “main” java.lang.VerifyError: Bad type on operand stack Exception Details: Location: Test.lambda$runTest$8(LTest$Worker;)V @2: invokedynamic Reason: Type ‘Test$Worker’ (current frame, stack[1]) is not assignable to ‘Test’ Current Frame: bci: @2 flags: { } locals: { ‘Test$Worker’ } stack: { ‘Test$Worker’, ‘Test$Worker’ } Bytecode: 0000000: 2a2a ba00 […]

从Java中的内部类访问外部类“super”

如何从内部类访问外部类’ super ? 我重写了一个让它在不同的线程上运行的方法。 从内联线程,我需要调用原始方法,但当然只是调用method()将变成无限递归。 具体来说,我正在扩展BufferedReader: public WaitingBufferedReader(InputStreamReader in, long waitingTime) { [..] @Override public String readLine() { Thread t= new Thread(){ public void run() { try { setMessage(WaitingBufferedReader.super.readLine()); } catch (IOException ex) { } } }; t.start(); [..] } } 这个地方给了我一个我无法找到的NullPointerException。 谢谢。

为什么内部类不能声明静态成员?

Java Tutorial说,由于内部类与封闭类的实例相关联,因此它(内部类)不能定义任何静态成员本身。 对我来说有趣的是为什么内部类不能声明静态成员,例如,一些private static字段,这个内部类的实例可能与同一内部类的其他实例共享? 这只是Java中的一个实现,必须被视为理所当然或其他什么?

内部类是否在java中作为组合关系工作?

内部类总是在外部类中,如果我们删除外部类,那么内部类也将被销毁。 我不考虑内存释放,我只考虑这个概念。 这是关于构图的相同概念。 然后内部类必须是现实世界中对象的组合关系的例子。 简而言之,我想将内部类的概念与现实世界的面向对象联系起来。 我认为构造函数是组合的好例子,那么在Object Orientation中涉及内部类的基本需求是什么。 我对内心阶级有所了解,但有很多模糊性。 例如 大学是外课。 教师是内在阶级。 我确实理解面向对象,但我发现很难将内部阶级与现实世界联系起来。 你能给我一些指示吗?