Best way to really grok Java-ME for a C# guy我最近开始为Blackberry开发应用程序。因此,我不得不跳到Java-ME并学习该语言及其相关工具。语法很简单,但是我仍然遇到各种陷阱和环境问题。 例如,令我惊讶并浪费大量时间的是类对象上缺少实际属性(我以为所有OOP语言都具有这种属性)。有很多陷阱。我去过很多地方,他们将Java语法与C#进行比较,但是似乎没有任何网站可以说明在迁移到Java时需要注意的事情。 环境是另一个整体。 Blackberry IDE简直太恐怖了。外观使我想起适用于Windows 3.1的Borland C ++-那已经过时了。其他一些问题还包括斑点的智能感知,弱调试等。Blackberry确实具有Eclipse插件的beta版本,但是没有调试支持,它只是一个带有精美重构工具的编辑器。 那么,关于如何融入Java-ME的任何建议? 这里的这个人必须进行逆转换。因此,他列出了Java和C#的十大区别。我将讨论他的主题,并展示它是如何用Java制成的: 陷阱#10-给我我的标准输出! 要使用Java打印到标准输出:
陷阱#9-命名空间==自由 在Java中,您没有命名空间的自由。您的类的文件夹结构必须与程序包名称匹配。例如,包org.test中的类必须位于org / test文件夹中 陷阱#8-超级发生了什么?
在Java中引用超类时,使用保留字 难题#7-将构造函数链接到基本构造函数 您在Java中没有这个。您必须自己调用构造函数 陷阱#6-Dagnabit,我该如何继承现有的课程? 要在Java中子类化,请执行以下操作:
这意味着类 难题#5-为什么常量不保持不变?
要在Java中定义常量,请使用关键字 陷阱#4-
Java中最常用的数据结构是 陷阱#3-存取器和变异器(字母和二传手) 您没有Java中的属性工具。您必须自己声明gets和set方法。当然,大多数IDE都可以自动执行此操作。 陷阱#2-我无法覆盖!?
您无需在Java中声明方法 还有#1陷阱...
在Java中,原始类型 而已。不要忘记查看原始链接,这里有更详细的讨论。 Java与C#并没有太大区别。在纯粹的语法层面上,以下是一些可能使您精通一天的指针: 好。
在Java中,您有两个异常家族: 好。
尽管Java支持自动装箱已经有一段时间了,但是您应该意识到C#和Java实现之间仍然存在许多差异。在C#中,您可以将 好。
Java有两种不同类型的嵌套类,C#只有一种。在Java中,未使用 好。
Java中的泛型与C#的实现方式根本不同。当为Java开发泛型时,为了保持与旧版VM的向后兼容性,决定所做的更改纯粹是语法上的,没有运行时支持。由于在运行时中没有直接的泛型支持,Java使用称为类型擦除的技术来实现泛型。与C#泛型实现相比,类型擦除有很多缺点,但是最重要的一点是Java中的参数化泛型类型没有不同的运行时类型。换句话说,编译后类型 好。 在我看来,C#开发人员最难以理解的是语言的三个方面。除此之外,还有开发工具和类库。 好。
在Java中,包(名称空间),类名和文件名之间存在直接关联。在公共根目录下,类 好。 在Java中,您具有不容易映射到C#的类路径和类加载器的概念(有些粗略的等效项对于大多数.NET开发人员而言并不常见)。 Classpath告诉Java VM在何处可以找到库和类(包括您的库和系统的共享库!),并且您可以将类加载器视为类型所在的上下文。类加载器用于从各个位置(本地磁盘,Internet,资源文件等)加载类型(类文件),但也限制了对这些文件的访问。例如,诸如Tomcat之类的应用程序服务器将为每个已注册的应用程序或上下文提供一个类加载器。这意味着应用程序A中的静态类将与应用程序B中的静态类不同,即使它们具有相同的名称并且共享相同的代码库也是如此。 AppDomain在.NET中提供了一些类似的功能。 好。 Java类库类似于BCL。许多差异都是外观上的差异,但这足以使您一次又一次地运行文档(和/或Google)。不幸的是,我不认为这里有什么事可做-您随即会熟悉这些库。 好。 底线:使用Java是唯一的方法。学习曲线并不陡峭,但是在使用的前两三个月中,经常会感到惊讶和沮丧。 好。 好。 简短的答案是-这将很烦人,但并不困难。 Java和C#具有相同的基础概念,并且许多库的样式都非常接近,但是您将不断遇到各种差异。 如果您在谈论类属性,那么Java具有那些。语法是
我会认真建议您获得更好的IDE。 |