Java 一种语言可以是“语言”吗;“完成”;没有显式类型转换?

Java 一种语言可以是“语言”吗;“完成”;没有显式类型转换?,java,casting,language-agnostic,theory,Java,Casting,Language Agnostic,Theory,如果不存在显式转换,编程语言能否“完整”?从本质上讲,使用缺乏显式类型转换的语言,我们有什么做不到的吗 例如,演示了Java需要显式类型转换来编写定制的泛型类型类 是否有任何其他示例用例我们绝对需要显式转换?当然,以equals方法为例-它必须获得对象一个参数。(阅读关于equals和friends的内容)当然,以equals方法为例-它必须获得对象一个参数。(阅读关于equals和friends的文章)当我处理没有考虑泛型的库时,或者当我需要向下转换某些对象以访问我知道是由子类实现的功能时,我

如果不存在显式转换,编程语言能否“完整”?从本质上讲,使用缺乏显式类型转换的语言,我们有什么做不到的吗

例如,演示了Java需要显式类型转换来编写定制的泛型类型类


是否有任何其他示例用例我们绝对需要显式转换?

当然,以
equals
方法为例-它必须获得
对象
一个参数。(阅读关于equals和friends的内容)

当然,以
equals
方法为例-它必须获得
对象
一个参数。(阅读关于equals和friends的文章)

当我处理没有考虑泛型的库时,或者当我需要向下转换某些对象以访问我知道是由子类实现的功能时,我经常使用强制转换,而不是由我正在使用的类实现的功能。使用
if(foo instanceof Bar)

但是,在处理没有考虑泛型的库时,或者当我需要向下转换某些对象以访问我知道是由子类实现的功能时,而不是由我正在使用的类实现的功能时,我经常使用强制转换。使用
if(foo instanceof Bar)
但是,在制作该演员阵容之前,请先执行以下几点

要反转自动加宽,请执行以下操作:

byte blammy = (byte)(schmarr & 0xF7);
遗留代码:

public void oldSchoolMethod(List oldSchoolListOfStrings)
{
    String firstValue = (String)oldSchoolListOfStrings.get(0);
}
HTTP代码:

public String getSchmarr(HttpServletRequest request)
{
    HttpSession session = request.getSession();
    return (String)session.getAttribute("Schmarr");
}
编辑:“类型增加”更正为“灵长类加宽”。

以下是一些

要反转自动加宽,请执行以下操作:

byte blammy = (byte)(schmarr & 0xF7);
遗留代码:

public void oldSchoolMethod(List oldSchoolListOfStrings)
{
    String firstValue = (String)oldSchoolListOfStrings.get(0);
}
HTTP代码:

public String getSchmarr(HttpServletRequest request)
{
    HttpSession session = request.getSession();
    return (String)session.getAttribute("Schmarr");
}

编辑:“type increases”更正为“primative wilding”。

当我们反序列化对象(例如从字符串)时,我们需要将对象强制转换到类中,以便使用其方法。

当我们反序列化对象(例如从字符串)时我们需要将对象强制转换到类中,以便使用其方法。

在Java中,无法声明泛型类型的数组
T
。例如,使用
new T[10]
声明数组是无效的:

public class List<T> {
    T[] backing_array = new T[10]; // this line is invalid,


    public T Item(int index) {
        return backing_array[index]; // and therefore this line is invalid as well.
    }

    //etc...
公共类列表{
T[]backing_array=new T[10];//此行无效,
公共T项目(整数索引){
返回数组[index];//因此此行也是无效的。
}
//等等。。。
我们拥有的最佳替代解决方案是:

public class List<T> {
    Object[] backing_array = new Object[10];

    public T Item(int index) {
        return (T) backing_array[index]; // notice that a cast is needed here if we want the return type of this function to be T
    }

    //etc...
公共类列表{
Object[]backing_数组=新对象[10];
公共T项目(整数索引){
return(T)backinging_array[index];//请注意,如果希望此函数的返回类型为T,则此处需要强制转换
}
//等等。。。

如果Java中不存在显式类型转换,就不可能构建泛型数组列表,因为不允许声明泛型类型
T
的数组。

在Java中,无法声明泛型类型
T
的数组。例如,使用
new T[10]
声明数组是无效的:

public class List<T> {
    T[] backing_array = new T[10]; // this line is invalid,


    public T Item(int index) {
        return backing_array[index]; // and therefore this line is invalid as well.
    }

    //etc...
公共类列表{
T[]backing_array=new T[10];//此行无效,
公共T项目(整数索引){
返回数组[index];//因此此行也是无效的。
}
//等等。。。
我们拥有的最佳替代解决方案是:

public class List<T> {
    Object[] backing_array = new Object[10];

    public T Item(int index) {
        return (T) backing_array[index]; // notice that a cast is needed here if we want the return type of this function to be T
    }

    //etc...
公共类列表{
Object[]backing_数组=新对象[10];
公共T项目(整数索引){
return(T)backinging_array[index];//请注意,如果希望此函数的返回类型为T,则此处需要强制转换
}
//等等。。。

如果Java中不存在显式类型转换,那么就不可能构建泛型数组列表,因为不允许声明泛型类型为
T
的数组。

这就是我要说的。假设我们不使用不利用泛型的库,为什么我们需要转换?当然需要,否则不会例如,假设我调用了某个方法,该方法抛出“异常”-这不是最有用的,但它确实发生了。我可以执行类似于
catch(Exception e){if(e instanceof AxisFault){System.err.println((AxisFault)e.getFaultString())}的操作{//执行其他操作}
据我所知,它之所以出现在语言中,仅仅是因为泛型直到很久以后才被引入。您已经有了一些抛出“异常”的方法。发生这种事情的唯一原因是语言支持强制转换。我的意思是,你明白我想说的吗?这就是我要说的。假设我们不使用不利用泛型的库,为什么我们需要强制转换?当然,我们需要,否则它不会在语言中。例如,假设我已经得到了我调用的me方法抛出了“Exception”-这不是最有用的,但它确实发生了。我可以执行类似于
catch(Exception e){if(e instanceof AxisFault){System.err.println(((AxisFault)e.getFaultString())}的操作{//执行其他操作}
据我所知,它之所以出现在语言中,仅仅是因为泛型直到很久以后才被引入。您已经有了一些抛出“异常”的方法这种事情发生的唯一原因是因为语言支持强制转换。我的意思是你明白我想说的吗?但是我们可以做任何事情而不需要equals方法,不是吗?我从来没有发现自己需要使用equals。有什么事情我们不能没有它吗?取决于你如何定义一切。你不能使用c的大部分没有它的集合,但你可能会说它也是一个库,在这种情况下,我唯一的答案是。是的,我们完全可以通过重新编写Java来避免强制转换。你从来没有比较过字符串吗?这也是equals的用法。看看String类的实现:强制转换是显式的。如果你进行了实现,这真的很重要吗或者其他人?是吗