java - 当我使用 getClass.getMethod(...) 时,它是 "reflection"吗?

标签 java android

我现在已经写了一些蓝牙应用程序,但我从未见过this particular approach直到最近。在示例中,他们使用 device.getClass().getMethod("createRfcommSocket", new Class[] { int.class }); 在我看来,这似乎只是说 BluetoothSocket bs = createRfcommSocket(....

他们的方法有什么区别

Method m = device.getClass().getMethod("createRfcommSocket", new Class[] { int.class });
sock = (BluetoothSocket) m.invoke(device, Integer.valueOf(1));

还有我的

sock = createRfcommSocket(.....

有理由使用其中之一吗?

谢谢

最佳答案

是的,使用getClass等就是反射。

不同之处在于,如果您输错方法名称或犯类似的错误,您可以从 IDE 和编译器获得帮助,而该代码的作者则只能靠自己。

也许他们处于编译时调用的方法不可用的情况,这可能是在允许在运行时加载新插件的软件上下文中的情况。但在这种情况下,您不会期望看到方法名称和其他详细信息硬编码到代码中。

对我来说,你的示例的文字文本看起来像是糟糕的编程。

关于java - 当我使用 getClass.getMethod(...) 时,它是 "reflection"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3331392/

相关文章:

Android:edittext内的动画文本

java - 如何为JavaFX异常对话框的按钮设置操作事件

java - 带有服务帐户的 Google Calendar 1.17 API - 未解析的 GoogleClient 类

java - 布局 - 相对于屏幕尺寸

android 按钮在 listview 之上

android - 在 mac (NDK) 中构建 Telegram 源时出错

android - 从设置 Activity 返回

android - 如何以编程方式在Android中绘制条形图?

java - 创建表示一组常量字符串的简单 Java 枚举的最佳方法是什么

java - 我的代码给了我一些奇怪的消息,但我不知道如何解释它