做爰片免费观看网站,北京做网站网络公司,做耳机套的网站,电子商务网站开发难点我偶然发现了Brian Goetz 提出的有关Java数据类的建议 #xff0c;立即意识到我也对如何使Java更好地成为一种语言有一些想法。 我实际上有很多#xff0c;但这只是五个最重要的列表。 专制#xff08;2006#xff09;#xff0c;迈克贾奇#xff08;Mike Judge#xf… 我偶然发现了Brian Goetz 提出的有关Java数据类的建议 立即意识到我也对如何使Java更好地成为一种语言有一些想法。 我实际上有很多但这只是五个最重要的列表。 专制2006迈克·贾奇Mike Judge 全局变量 。 Java中有Singleton 众所周知它只是全局变量 。 在Java中启用全局变量并摆脱Singletons不是很好。 PHPJavaScriptRuby和许多其他语言都有它们为什么Java没有 看下面的代码 class User {private static final User INSTANCE;private User() {}public static User getInstance() {synchronized (User.INSTANCE) {if (User.INSTANCE null) {User.INSTANCE new User();}}return User.INSTANCE;}public String getName() {// return users name}
} 然后要访问它我们必须使用 String name User.getInstance().getName(); 这是一个单例。 看到它多么冗长吗 我们可以简单地将其替换为全局变量 global是我建议使用的关键字 global User user; 然后 user.getName(); 更少的代码编写更容易阅读 全局函数和命名空间 为了将静态方法组合在一起我们创建了实用工具类 在其中我们必须定义私有构造函数以防止其实例化。 此外我们还必须记住静态方法位于哪个特定的实用程序类中。这只是额外的麻烦。 我建议我们将全局函数添加到Java和可选的“命名空间”中以对它们进行分组。 看一下这个实用程序类 class TextUtils {private TextUtils() {}public static String trim(String text) {if (text null) {return ;}return text.trim();}
} 现在使用命名空间查看此全局函数 namespace TextUtils {String trim(String text) {if (text null) {return ;}return text.trim();}
} 我的观点是由于我们已经在使用类作为函数的集合因此让我们更加方便。 在某些应用程序中我们甚至不需要名称空间而只需要全局函数例如C和C 。 完全访问私有属性和方法 为了从外部访问私有属性或对象的方法我们必须使用Reflection API 。 这并不是特别困难但是确实需要几行代码而这些代码并不容易阅读和理解 class Point {private int x;private int y;
}
Point point new Point();
Field field point.getClass().getDeclaredField(x);
field.setAccessible(true);
int x (int) field.get(point); 我建议我们允许任何对象访问另一个对象的任何属性和方法 Point point new Point();
int x point.x; 当然如果它们是私有的则编译器将发出警告。 在编译时您只需忽略警告并继续。 如果您真的很关心封装请注意警告并采取其他措施。 但是在大多数情况下程序员会忽略它因为他们无论如何都会愉快地使用Reflection API。 默认为NULL 让我们使用一组不完整的参数来调用构造函数和方法会很方便。 默认情况下我们不提供的参数将设置为null 。 另外当方法必须返回某些内容但没有return语句时Java应该返回null 。 这几乎完全是它在PHPRuby和许多其他语言中的工作方式。 我相信这将是Java的便捷功能 猴子 开发人员也是如此。 当某些参数是可选的时我们不需要定义太多方法。 方法重载非常冗长且难以理解。 相反我们应该有一个带有一长串参数的方法。 其中一些将由调用者提供其他一些将被设置为null 。 该方法将决定要做什么例如 void save(File file, String encoding) {if (encoding null) {encoding UTF-8;}
} 然后我们只调用save(f)或save(f, UTF-16) 。 该方法将理解我们的意思。 我们还可以使其更加方便就像在Ruby中一样通过名称提供方法参数 save(file: f, encoding: UTF-16); 另外当没有任何要返回的内容时默认情况下该方法必须返回null 。 编写return null只是浪费代码行并不能真正提高可读性。 看一看 String load(File file) {if (file.exists()) {return read_the_content();}
} 从这段代码中可以明显看出如果文件存在则该方法将加载并返回其内容。 如果不是它将返回null 这将为调用者提供一个很好的指示表明某些错误和文件内容不可用。 吸气剂和二传手 我认为我们需要此功能很明显每个私有属性都必须自动具有setter和getter 。 无需创建它们Java将像Kotlin和Ruby一样提供现成的它们。 如果没有用于读取和修改它的getter和setter方法那么拥有一个属性有什么意义呢 有了这项新功能我们将不再需要Lombok或IntelliJ IDEA的帮助。 也许我应该把我的想法变成对JCP的正式建议。 你怎么看 您可能还会发现这些相关的帖子很有趣 每个私有静态方法都是新类的候选人 尝试。 最后。 如果。 不。 空值。 ; 为什么NULL是错误的 ; 为什么在OOP中很多退货声明是个坏主意 ; 对象可以成为朋友吗 ; 翻译自: https://www.javacodegeeks.com/2017/11/five-features-make-java-even-better.html