Java中的自定义隐式转换

Java中的自定义隐式转换,java,Java,在C#中,我可以为我的类创建自己的隐式转换,如下所示 public静态隐式运算符类型youwanttochangeto(ClassYouAreChanging) { 键入Youwant以更改为x; //将c转换为x 返回x; } 如何使一个类能够隐式转换为另一个类?同样在C#中,我可以将隐式转换为显式,以创建手动转换的功能。如何在Java中实现这一点?不能用Java重载运算符。 将方法添加到所选类以执行转换。 例如: public class Blammy { public stat

在C#中,我可以为我的类创建自己的隐式转换,如下所示

public静态隐式运算符类型youwanttochangeto(ClassYouAreChanging)
{ 
键入Youwant以更改为x;
//将c转换为x
返回x;
}

如何使一个类能够隐式转换为另一个类?同样在C#中,我可以将隐式转换为显式,以创建手动转换的功能。如何在Java中实现这一点?

不能用Java重载运算符。 将方法添加到所选类以执行转换。 例如:

public class Blammy
{
    public static final Blammy blammyFromHooty(final Hooty hoot)
    {
        Blammy returnValue;

        // convert from Hooty to Blammy.

        return returnValue;
    }
}
编辑
  • 只有内置类型具有隐式转换
  • 显式转换(在java中)称为强制转换。例如,
    intq=15;双x=(双)q
  • 您的自定义类型永远不能进行隐式转换
  • 扩展
    实现
    不是转换
  • 所有隐式转换都适用于基元类型

没有像这样的简单转换。(convert c to x确实是空的,对吗?)所以只有内置类型有隐式转换和显式转换?有没有过自定义类可以进行显式或隐式转换的情况?比如扩展和实现?例如,不同的数字类型具有自定义的隐式转换,因此它们可以进行转换,但我们不允许这样做?Java如何确定是否可以进行显式转换?只有在扩展或实现时,才能强制转换自定义类型?扩展和实现不是转换。显式转换是一种强制转换。例如,int x=(int)0x00;类型之间的“强制转换”不是转换。这只是给编译器的指令,“将此引用视为对其他类型的引用”。在Java中是否有可以显式转换和隐式转换的项目列表?隐式转换在Java中通常称为“装箱”和“取消装箱”,并且仅针对Java.lang.Number类+字符进行。它用于从为“char”创建的堆栈上的16位到“Character”所需的堆中的16位,或者从“int”堆栈上的32位到“Integer”所需的堆中的32位,等等。Ant您不能自己定义装箱和取消装箱。作为一个在Java和C方面有一定经验的程序员,我可以说重载的强制转换操作符是一个很好的解决问题的方法,但它们也可以替代大量的“builder…build()”调用。