Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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 - Fatal编程技术网

如何在Java中导入两个同名类

如何在Java中导入两个同名类,java,Java,现在我有点问题。我正在编写一个转换器函数,假设我想将一种类型的卡(一个类)转换为另一种类型(另一个类) 假设一个是foo.bar.Card,另一个是baz.banan.Card。我可以要一个 import foo.bar.Card; 但我做不到 import foo.bar.Card; import baz.banan.Card; 因此,编译器无法区分它们 我可以只做其中一个,然后在另一个前面加前缀,这样我的代码中就有Card和baz.banan.Card,但我希望避免使用很长的名称。理想情

现在我有点问题。我正在编写一个转换器函数,假设我想将一种类型的卡(一个类)转换为另一种类型(另一个类)

假设一个是foo.bar.Card,另一个是baz.banan.Card。我可以要一个

import foo.bar.Card;
但我做不到

import foo.bar.Card;
import baz.banan.Card;
因此,编译器无法区分它们

我可以只做其中一个,然后在另一个前面加前缀,这样我的代码中就有Card和baz.banan.Card,但我希望避免使用很长的名称。理想情况下,我希望使用bar.Card和banan.Card,但这可能吗?如果可能,如何使用?

您有两种选择:

  • 将类重命名为唯一的名称
  • 使用完全限定名引用类名:

    foo.bar.Card card = new foo.bar.Card();
    baz.banan.Card otherCard = new baz.banan.Card();
    
  • 正如Whalberg所建议的,另一个选项是使用不同的名称创建包装类。

    您有两个选项:

  • 将类重命名为唯一的名称
  • 使用完全限定名引用类名:

    foo.bar.Card card = new foo.bar.Card();
    baz.banan.Card otherCard = new baz.banan.Card();
    

  • 正如Whalberg所建议的,另一种选择是使用不同的名称创建包装类。

    不幸的是,他们的方法并不能真正做到这一点

    我知道有两种稍微有用的解决方法:

    期末班

    使用与调用
    Card
    对象方法完全相同的方法,为其中一个
    Card
    类创建包装类。不幸的是,这不是一个非常优雅的方法

    可变类

    创建一个扩展
    Card
    CardA
    类,并将
    CardA
    用作
    Card


    不幸的是,你只有两个选择。如果这些方法不起作用,您将不得不使用完全限定名称。

    不幸的是,它们并不是实现这一点的真正方法

    我知道有两种稍微有用的解决方法:

    期末班

    使用与调用
    Card
    对象方法完全相同的方法,为其中一个
    Card
    类创建包装类。不幸的是,这不是一个非常优雅的方法

    可变类

    创建一个扩展
    Card
    CardA
    类,并将
    CardA
    用作
    Card


    不幸的是,你只有两个选择。如果这些不起作用,您将不得不使用完全限定名。

    我能想到的唯一方法是将其中一个包装到名为“different”的虚拟类中!我想那是不可能的(如中所述,如果您不需要访问
    静态
    变量和函数,您可以扩展其中一个。我唯一能想到的方法是将其中一个封装到名为“different”的虚拟类中!我认为没有办法:(如中所述,如果您不需要访问
    静态
    变量和函数,您可以扩展其中的一个。他明确表示,他不想为对象添加前缀,以避免使用很长的名称1。在我的情况下,这不是一个选项。2.这是我不想做的。那么,没有办法将这些类分开。编译器怎么知道呢当你写
    卡片
    时,如果你没有提供完全限定的名称,你指的是包X,在另一种情况下指的是包Y?有时你想避免一些东西,但如果设计不允许,你的选择是有限的。第三种选择是将其中一个类包装在一个新类中,该类将委托给包装的类。他说ely说他不想为对象添加前缀以避免使用很长的名称1.在我的情况下,这不是一个选项。2.这是我不想做的。那么,没有办法将这些类分开。编译器如何知道,当您编写
    卡时,您指的是包X,而在另一种情况下,如果您没有提供完全限定符,则指包Yed name?有时您希望避免某些内容,但如果设计不允许,则您的选项是有限的。第三个选项是将其中一个类包装到一个新类中,该类将委托给包装的类。