相关疑难解决方法(0)

Java中的null是什么?

什么是null

null一个什么的实例?

什么集合null属于?

它是如何在记忆中表现出来的?

java null terminology

242
推荐指数
8
解决办法
30万
查看次数

基于参数的实际类型重载方法选择

我正在尝试这段代码:

interface Callee {
    public void foo(Object o);
    public void foo(String s);
    public void foo(Integer i);
}

class CalleeImpl implements Callee
    public void foo(Object o) {
        logger.debug("foo(Object o)");
    }

    public void foo(String s) {
        logger.debug("foo(\"" + s + "\")");
    }

    public void foo(Integer i) {
        logger.debug("foo(" + i + ")");
    }
}

Callee callee = new CalleeImpl();

Object i = new Integer(12);
Object s = "foobar";
Object o = new Object();

callee.foo(i);
callee.foo(s);
callee.foo(o);
Run Code Online (Sandbox Code Playgroud)

这打印foo(Object o)三次.我希望方法选择考虑到真实的(不是声明的)参数类型.我错过了什么吗?有没有办法修改这个代码,以便打印foo(12), …

java oop

107
推荐指数
4
解决办法
5万
查看次数

为什么`System.out.println(null);`give"方法println(char [])对于类型PrintStream错误是不明确的"?

我正在使用代码:

System.out.println(null);
Run Code Online (Sandbox Code Playgroud)

它显示错误:

The method println(char[]) is ambiguous for the type PrintStream
Run Code Online (Sandbox Code Playgroud)

为什么没有null代表Object

java null system println system.out

20
推荐指数
2
解决办法
6014
查看次数

null作为方法参数的类型是什么?

所以这就是这个例子

public static void main(String[] args) {        
    new Stuff(null);
    new Stuff("a");
    new Stuff(1);           
}
Run Code Online (Sandbox Code Playgroud)

和类Stuff定义如下

public class Stuff {    
       Stuff(Object o){
           System.out.println("object");        
       }

       Stuff(String s){
           System.out.println("string");        
       }

}
Run Code Online (Sandbox Code Playgroud)

输出是

string
string
object
Run Code Online (Sandbox Code Playgroud)

Java如何告诉它null是一个String?如果我换Stuff

public class Stuff {    

       Stuff(String s){
           System.out.println("string");        
       }

       Stuff(Integer o){
           System.out.println("Integer");           
       }

}
Run Code Online (Sandbox Code Playgroud)

我得到编译错误Stuff(null):

The constructore Stuff(String) is ambigous. 
Run Code Online (Sandbox Code Playgroud)

再说一次,为什么Java"决定" null是一个String

java

13
推荐指数
2
解决办法
296
查看次数

在Java中重载方法中使用null

可能重复:
NULL参数的方法重载

以下代码编译并正常运行.

public class Main
{
    public void temp(Object o)
    {
        System.out.println("The method with the receiving parameter of type Object has been invoked.");
    }

    public void temp(String s)
    {
        System.out.println("The method with the receiving parameter of type String has been invoked.");
    }

    public void temp(int i)
    {
        System.out.println("The method with the receiving parameter of type int has been invoked.");
    }

    public static void main(String[] args)
    {
        Main main=new Main();
        main.temp(null);
    }
}
Run Code Online (Sandbox Code Playgroud)

在此代码中,要调用的方法是接受类型参数的方法 String

文档说.

如果多个成员方法都可访问并适用于方法调用,则必须选择一个为运行时方法调度提供描述符.Java编程语言使用选择最具体方法的规则.

但我不明白当代码中接受原语参数的方法之一 …

java null overloading

6
推荐指数
1
解决办法
4987
查看次数

对象与字符串方法

可能重复:
基于参数的实际类型
的重载方法选择当参数是文字空值时,如何选择重载方法?

当我执行下面的代码时,我得到以下输出:

调用String参数的方法......"

为什么?

public class StringObjectPOC {

    public static void test(Object o)   {
        System.out.println("Method with Object argument Called ...");
    }
    public static void test(String str){
        System.out.println("Method with String argument Called ...");
    }
    public static void main(String[] args) {
        StringObjectPOC.test(null);
    }
}
Run Code Online (Sandbox Code Playgroud)

java

6
推荐指数
1
解决办法
2488
查看次数

为什么输出是"字符串".意外的输出

 public class Test{

public static void abc(String s) {
    System.out.println("String");

}

public static void abc(Object s) {
    System.out.println("OBject");

}

 public static void main(String[] args) {
    // TODO Auto-generated method stub
    abc(null);

}}
Output-String
Run Code Online (Sandbox Code Playgroud)

我是java的初学者,我对上述程序的输出感到困惑.请解释一下输出的原因.

java string

3
推荐指数
1
解决办法
87
查看次数

为什么对象类不取null

我知道原始数据类型的情况下的自动类型提升概念.但是在参考数据类型的情况下,我有下面的代码,它完美地工作.

public class Test4 {

void set(Object o) {
    System.out.println("Inside Object");
}

void set(double[] a) {
    System.out.println("Array");
}
public static void main(String[] args) {
    new Test4().set(null);

}
}
Run Code Online (Sandbox Code Playgroud)

它给出了输出数组.

但是如果代替Object o,如果我们有任何其他类,那么这将显示编译时错误该方法对于类型Test4是不明确的

下面的代码给出了编译时错误

public class Test4 {

/*void set(Object o) {
    System.out.println("Inside Object");
}*/

void set(String s) {
    System.out.println("String");
}
void set(double[] a) {
    System.out.println("Array");
}
public static void main(String[] args) {
    new Test4().set(null);

}

}
Run Code Online (Sandbox Code Playgroud)

据我所知,每个参考数据类型(类,接口和数组)的默认值为null.

那么为什么上面的代码适用于Object o.

提前致谢

java overloading

0
推荐指数
1
解决办法
129
查看次数

标签 统计

java ×8

null ×3

overloading ×2

oop ×1

println ×1

string ×1

system ×1

system.out ×1

terminology ×1