Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中是否有任何性能下降,因为扩展了“的类”;否";原因?_Java_Type Conversion_Jvm Hotspot_Hungarian Notation - Fatal编程技术网

java中是否有任何性能下降,因为扩展了“的类”;否";原因?

java中是否有任何性能下降,因为扩展了“的类”;否";原因?,java,type-conversion,jvm-hotspot,hungarian-notation,Java,Type Conversion,Jvm Hotspot,Hungarian Notation,我有一个Vector3i类,它在很多情况下都很有用,但我发现自己扩展了它,以使用类型系统来防止bug 例如,我可能有一个“以自我为中心”的向量3i,它是世界上某个对象的局部向量,还有一个世界坐标向量3i 这两者在没有转换的情况下自然是不相容的,对彼此来说毫无意义 这将是一个很好的使用环境,但是我正在扩展这个类,并且没有添加新的功能 考虑到JVM/热点优化,我是否会导致性能损失?继承是一个强大的工具,但这种能力是有代价的。继承本身有很多陷阱和问题。特别是,如果不小心实现,它会破坏封装并导致脆弱的代

我有一个Vector3i类,它在很多情况下都很有用,但我发现自己扩展了它,以使用类型系统来防止bug

例如,我可能有一个“以自我为中心”的向量3i,它是世界上某个对象的局部向量,还有一个世界坐标向量3i

这两者在没有转换的情况下自然是不相容的,对彼此来说毫无意义

这将是一个很好的使用环境,但是我正在扩展这个类,并且没有添加新的功能


考虑到JVM/热点优化,我是否会导致性能损失?

继承是一个强大的工具,但这种能力是有代价的。继承本身有很多陷阱和问题。特别是,如果不小心实现,它会破坏封装并导致脆弱的代码

Java中的继承机制已经持续发展了15多年。你可以相信它是快速和高效的。当您的数据模型需要继承时,没有与性能相关的重要原因来传递继承


对于您的情况,通过组合而不是继承来表示功能可能更有意义(换句话说,不要让ClassB扩展ClassA,而是让ClassA成为ClassB中的实例字段,然后将方法调用委托给封装的对象)。你至少应该考虑一下。与继承相比,组合生成的代码更健壮、更不脆弱。

请记住,Java IDE已经消除了匈牙利符号的许多所谓优势,因为Java是一种可以推理的语言(与C/C++不同)。可以推理吗?我不明白,或者你是说java的类型系统?主要是类型系统。IDE可以明确地说出某个变量/方法返回的类型。