小编Bra*_*rds的帖子

在面向对象的世界中处理"全局"数据结构

这是一个有很多答案的问题 - 我有兴趣知道其他人认为是"最佳实践".

请考虑以下情况:您有一个面向对象的程序,它包含许多不同类所需的一个或多个数据结构.您如何使这些数据结构可访问?

  1. 您可以显式传递引用,例如,在构造函数中.这是"正确的"解决方案,但它意味着在整个程序中复制参数和实例变量.这使得对全局数据的更改或添加变得困难.

  2. 您可以将所有数据结构放在单个对象中,并传递对该对象的引用.这可以是为此目的创建的对象,也可以是程序的"主要"对象.这简化了(1)的问题,但是数据结构可能或可能不具有彼此的任何关系,并且将它们一起收集在单个对象中是非常随意的.

  3. 您可以使数据结构"静态".这使您可以直接从其他类引用它们,而无需传递引用.这完全避免了(1)的缺点,但显然不是OO.这也意味着只能有一个程序实例.

当有很多数据结构时,很多类都需要,我倾向于使用(2).这是OO纯度和实用性之间的折衷.其他人做什么?(对于它的价值,我主要来自Java世界,但这个讨论适用于任何OO语言.)

oop

15
推荐指数
1
解决办法
4162
查看次数

Java:为什么我收到错误消息"类型不匹配:无法将int转换为byte"

如果声明byte或short类型的变量并尝试对这些变量执行算术运算,则会收到错误"Type mismatch:can int int int to short"(或相应的"Type mismatch:can int int to int").

byte a = 23;
byte b = 34;
byte c = a + b;
Run Code Online (Sandbox Code Playgroud)

在此示例中,编译错误位于第三行.

java byte type-conversion type-mismatch

10
推荐指数
2
解决办法
2万
查看次数

带有VSCode的JavaFX-11

我必须在这里遗漏一些明显的东西...我正在尝试VSCode(来自Eclipse),但是我无法获得VSCode来查看JavaFX11库。在import语句中,标记了对JavaFX组件的所有引用:

[Java] The import javafx cannot be resolved
Run Code Online (Sandbox Code Playgroud)

在Eclipse中,这由“用户库”处理,该库在.classpath中生成一个条目

<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/JavaFX11">
    <attributes>
        <attribute name="module" value="true"/>
    </attributes>
</classpathentry>
Run Code Online (Sandbox Code Playgroud)

尽管VSCode似乎可以从Eclipse理解.classpath的其余部分,但它不理解这一点。用磁盘上的实际位置替换path属性也不起作用。

为了清楚起见:

  • 这个问题专门与Java 11有关。在早期的Java版本中,JavaFX是JDK的一部分。在Java 11中,它已移至一组外部模块。
  • 我不想使用Maven或Gradle。我需要不使用构建工具直接引用模块。

值得一提的是,如果VSCode也可以直接执行JavaFX应用程序,那就太好了。但是,如果我必须从命令行使用显式的模块路径和类路径启动应用程序,这是可以接受的

javafx visual-studio-code java-11 javafx-11

6
推荐指数
1
解决办法
8830
查看次数

在VB6应用程序中包含sql脚本

我正在维护一个旧的VB6应用程序,并希望直接在项目的一部分中包含SQL脚本.然后,VB6应用程序应该提取此脚本的文本并在服务器上执行它.

这种方法的原因是多种多样的 - 除其他外,我们希望只提供更新的可执行文件而不是完整的更新/安装包.因此,SQL脚本需要像资源文件一样编译到应用程序中.而且,显然,必须能够从代码中获取内容,以便将其发送到数据库服务器.

有没有人有一个很好的方法来做到这一点?

sql vb6

0
推荐指数
1
解决办法
1805
查看次数