我们可以不使用导入语句访问内置类吗?

卡拉姆维尔·考尔(Karamvir Kaur)

我创建了一个类Exception(知道已经存在一个具有相同名称的内置子类),如下所示:

class Exception {
    public static void main(String args[]) {    
        int i=8;
        try{
            int a = args.length;
            int g = i/a;
        } catch(ArithemticException e){
            System.out.println("here is the error:"+e);
        }
    }
}


class Except7 {
    static int h;
    public static void main(String args[]) {
        try{
            int h = 9 / 0;
            System.out.println("//");
        } catch(ArithmeticException e) {
            h = 4;
            System.out.println(h);
        } catch(Exception e) {
            System.out.println("h");
        }
    }
}

您可能已经注意到,我在先前的代码中写了“算术”的错误拼写,所以可以肯定的是,编译器显示了一个错误,即找不到该symbol(ArithemticException e)。我所做的是,我没有在这里更改拼写,而是编写了另一段代码(后者)。在这里,我编写了正确的算术拼写并尝试对其进行编译。它给了我两个错误:

  1. incompatible types (required : Throwable found: Exception )
  2. cannot find symbol(ArithemticException.java)

我的怀疑是:

  1. 我们如何如此轻松地更改一个内置类(Exception)?是因为它是一个抽象类?

  2. 即使我可以直接访问它(即不使用'import'语句),我也不倾向于更改异常的名称(ArithemticException)。我只是将其放在“ catch”语句中。然后,为什么没有“ import”语句的其他程序也可以访问它。(我也没有创建任何程序包,也就是说它们是受程序包保护的)

  3. 先前的程序未编译,其他程序仍出现“找不到符号”错误。

安德烈亚斯·福斯特(Andreas Fester)

我们如何如此轻松地更改内置类(Exception)

你不能。

发生的事情是,您自己的类Exception是在没有任何显式import语句的情况下导入的,因为它与处于同一包中Except7因此,在编译时Except7,编译器使用yourPackage.Exception,而不是java.lang.Exception

另请参见JLS:第7章。Packages

一个包由多个编译单元组成(第7.3节)。编译单元可以自动访问其包中声明的所有类型,还可以自动导入预定义包java.lang中声明的所有公共类型。

另请参见字符串类使混乱

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我们可以在 if 语句中使用 assert 吗?

我们可以使用类作为标题吗

我们可以在Symfony的Twig File中使用PHP内置函数吗

我们可以快速从基类访问重写的类函数吗?

为什么我们可以使用指针访问私有数据成员类,而不使用类中的其他成员,朋友功能?

我们可以不使用<figure>在图像上使用<figcaption>吗?

我们可以从java中的main()方法访问非静态类吗?

我们可以在不使用Cloud Composer的情况下运行气流模板吗

我们可以在 Angular js 中不使用 $apply 触发 $digest 吗?

不使用绝对div,我们可以创建不同的分层重叠div吗

我们可以在不使用时关闭 Azure HDInsight 群集以避免充电吗

我们可以在不使用 Firebase 的情况下向全球发送通知吗?

为什么我们不需要使用“ require”语句,但仍然可以使用内置函数?

我们可以不用javascript编写IF语句吗

我们可以从 woocommerce 导入产品以使用 csv 文件进行购物吗?

我们可以在 Python 中使用列索引组合条件语句吗?

我们可以在准备好的语句(PostgreSQL)中使用DDL命令吗?

我们可以在C ++中的if语句中使用符号吗?

我们可以在Siddhi SQL语句中使用变量吗?

我们可以在 if 语句中使用三元运算符吗?

与使用Chef / Puppet相比,我们可以在CDH中使用一些内置的Configuration Management吗?

我们可以从Google Apps脚本访问DataStore吗?

我们可以访问已释放的内存吗?

我们可以通过名称访问VMX设备吗?

我们可以在CustomAdapter类中调用OnLongClickListener吗?

我们可以重载类对象的行为吗

我们可以从抽象类中实现吗?

我们可以创建名称为“ class”的类吗?

我们可以在类中声明密封方法吗