Tag: 内部类

内部类的用法

我可以理解内部类是什么以及如何编写程序。 我的问题是程序员在什么情况下真的需要内部阶级?

Android + MySQL使用com.mysql.jdbc.Driver

我正在编写一个将连接到MySQL服务器的Android应用程序。 现在,我正在使用http:// localhost:3306 /通过XAMPP在我的计算机上测试MySQL服务器。 以下代码在严格测试JAVA应用程序时工作正常。 import java.sql.*; public class MySQL{ public static void main(String[] args) { System.out.println(“MySQL Connect Example.”); Connection conn = null; String url = “jdbc:mysql://localhost:3306/”; String dbName = “database”; String driver = “com.mysql.jdbc.Driver”; String userName = “root”; String password = “”; try { Class.forName(driver).newInstance(); conn = DriverManager.getConnection(url+dbName,userName,password); System.out.println(“Connected to the database”); conn.close(); System.out.println(“Disconnected […]

Javareflection:如何检索匿名内部类?

我在另一个类( SomeClass )中有一个匿名内部类。 SomeClass.class.getClasses()和SomeClass.class.getDeclaredClasses()返回空数组。 我在Class’Javadocs中找不到一些关于此的提示。 可以通过某种方式使用reflection检索匿名内部类吗? 匿名内部类和普通内部类之间还有什么显着差异?

使用javareflection实例化私有内部类

是否可以使用Javareflection从另一个类实例化私有内部类。 例如,如果我使用此代码 public class Main { public static void main(String[] args) {} } class OtherClass { private class Test {} } 是否可以从类main中的main方法实例化并获得对Test的访问权限。

Java(匿名与否)内部类:使用它们是否合适?

在我的一些项目和一些书中据说不使用内部类(匿名与否,静态与否) – 除了在某些限制条件下,如EventListener或Runnable s – 是最佳实践。 他们甚至在我的第一个行业项目中都是“禁止”。 这真的是最佳做法吗? 为什么? (我不得不说我经常使用它们……) – 编辑— 我不能在所有这些答案中选择一个正确的答案:大部分都是正确的部分:我仍然会使用内部类,但我会尽量少用它们!

内部类和局部变量

如果我在方法中定义的Inner class需要使用它,为什么我需要将local variable声明为final ? 示例: class MyOuter2 { private String x = “Outer2”; void doStuff() { final String y = “Hello World”; final class MyInner { String z = y; public void seeOuter() { System.out.println(“Outer x is “+x); System.out.println(“Local variable is “+y); MyInner mi = new MyInner(); mi.seeOuter(); } } } } 为什么String y需要是最终常量? 它是如何影响的?

Java:非静态嵌套类和instance.super()

我很难在Java中围绕非静态嵌套类。 考虑以下示例,其中打印“内部”然后打印“子”。 class Outer { class Inner { Inner() { System.out.println(“Inner”); } } } public class Child extends Outer.Inner { Child(Outer o) { o.super(); System.out.println(“Child”); } public static void main(String args[]) { new Child(new Outer()); } } 我理解Inner的实例总是必须与外部实例相关联,并且它也适用于Child,因为它扩展了Inner。 我的问题是o.super()语法的含义 – 为什么它调用Inner构造函数? 我只看到一个普通的super(args)用于调用超类构造函数和super.method()来调用重写方法的超类版本,但从来没有forms为instance.super() 。

为什么内部类可以访问私有方法?

我不明白为什么这会编译。 f()和g()在内部类中是可见的,尽管是私有的。 他们是特殊的,因为他们是内部阶级? 如果A和B不是静态类,它仍然是相同的。 class NotPrivate { private static class A { private void f() { new B().g(); } } private static class B { private void g() { new A().f(); } } }