精华内容
下载资源
问答
  • java 接口不是new吗? 这叫匿名内部,你后面的大括号实际上就是一个Runnable的实现了 只不过这个类名和接口名称一样,所以是匿名的,别人地方也用了 这种写法相当于先创建了一个匿名,实现了这个接口,...

    java 接口不是不能new吗?

    • 这叫匿名内部类,你后面的大括号实际上就是一个Runnable的实现类了 只不过这个类名和接口名称一样,所以是匿名的,别人地方也用不了
    • 这种写法相当于先创建了一个匿名类,实现了这个接口,然后new一个这个匿名类的对象
      所以可以使用.
    • 这个是等于创建了一个匿名内部类,这个类实现了该接口,并实现了该接口的run方法。
      与你定义一个类实现这个接口是等效的。
      不过这个就是没有类名。而且无法在其他地方new出对象。
    • java:使用匿名类直接new接口
    • java中的匿名类有一个倍儿神奇的用法,见下面代码示例:package com.dtqn.action;  public interface interFace {    void writeClass();}实现类package com.dtqn.action;  public class Program {      public static void main(String[] args) {        // TODO Auto-generated method stub        interFace say = new interFace(){              @Override            public void writeClass() {                // TODO Auto-generated method stub                            }                    };    }  }new接口用于简化代码用。。。。。。。。。
       
    展开全文
  • 今天我们讨论问题是:接口 对象 = new 实现 与 实现 对象= new 实现??? Java 中到底是应该用接口类型 还是实现类型去引用对象? //implA 为接口 ClassA为其实现 implA a=new ClassA();//...

    今天我们讨论问题是:接口 对象 = new 实现类 与 实现类 对象= new 实现类???

    Java 中到底是应该用接口类型 还是实现类的类类型去引用对象?

     

    //implA 为接口 ClassA为其实现类
    implA a=new ClassA();//接口类型的引用变量A 去接收对象地址
    or
    ClassA a=new ClassA();//类类型的引用变量A 去接收对象地址

     

    我们假设有一个接口A ,和它得实现类B,简化代码如下:

    public interface InterA{
    
        void request();
    }
    
    public class ImplA implements InterA {
    
        @Override
        public void request() {
            System.out.println("接口中的方法");
        }
    
        public void specile() {
            System.out.println("实现类中特殊的方法");
        }
    }

    测试类:

    public class Test {
    
        public static void main(String[] args) {
            /**
             * 接口类型的引用变量A 去接收对象地址,只能调用接口中的方法
             */
            InterA a= new ImplA();
            a.request();
    
            /**
             * 类类型的引用变量A 去接收对象地址,可以调用很多方法
             */
            ImplA b = new ImplA();
            b.request();
            b.specile();
        }
    }
    InterA a= new ImplA();

    用接口类型的引用变量demo,去接收实现类B实例化出来的对象地址(这里的=是传递的地址)。为什么不是 ImplA b = new ImplA();呢,这样也不会有问题啊?(当然InterA a= new InterA();是不可能的,因为接口是不能用来实例化对象的,但可以用来声明一个接口类型的引用变量)。

     

    转载于:https://www.cnblogs.com/xiaoheliu1024/p/10918017.html

    展开全文
  • Javanew不new的区别

    万次阅读 多人点赞 2017-06-29 15:06:54
    例如以下两种情况 1.ArrayList<BookInfo> InfoList=null; BookInfo bookinfo=null; bookinfo=test.getinfo();2.ArrayList<BookInfo> InfoList=new ArrayList(); BookInfo bookinfo=new BookInfo(); bookinf
    例如以下两种情况
    1.ArrayList<BookInfo> InfoList=null;
      BookInfo bookinfo=null;
      bookinfo=test.getinfo();
    
    2.ArrayList<BookInfo> InfoList=new ArrayList<BookInfo>();
      BookInfo bookinfo=new BookInfo();
      bookinfo=test.getinfo();

    首先要明白,java里对象传递的时候,传递的都是引用(也就是对象的地址),这比传递整个对象高效的多。而基础类型,int,double等传递的才是值。

    比如,(new ArrayList).add(new String(“hello”)),jvm只是把new String(“hello”)的地址存入到了列表list里面。String str = new String(“Test”),是开辟内存放入了对象,并把它的引用赋给str,即str是一个地址,它指向对象new String(“test”)所开辟的内存空间,该空间中有值‘test’。

    同理,BookInfo bookinfo=null与BookInfo bookinfo=new BookInfo():前者,是声明了一个对象(的引用),jvm并没有开辟内存放入一个对象;而后者,在声明了一个对象的引用后,又把新开辟的没有存储任何有效值的对象的地址赋给了他。bookinfo=test.getinfo(),又把它指向了另一个地址 ,也就是说原来开辟的内存并没有用,那就没有意义。但是java虚拟机自动垃圾回收机制会判断并回收内存的。。不用想太多。完全可以写成:ArrayList InfoList=new ArrayList();BookInfo bookinfo=infoList.getInfo()。

    综上:如果你的类在创建后,要自己读写数据,那就必须初始化;如果像Bookinfo那样,完全是为了从其他地方接收引用,也完全可以省了new吧,还有我们需要知道的是,在使用对象的时候一般都是通过New,我们知道通过new关键字实际上是在heap(堆中)开辟了一块内存,而等号右边的这个对象实际上就是一个内存地址,不信的话,可以打印出来看看。其实并不仅仅这么简单。堆上分配的是大小不定的对象,而栈上对象的大小是固定的,基本数据类型(int,short)什么的都在栈上,堆上对象的引用也在栈上,如果堆上的对象在栈(stack)上没有了引用,它就被GC回收了。

    展开全文
  • java中有时候初始化一个对象不需要new关键词 比如 camera =Camera.open( ); 就不需要new关键词 还有那些初始化可以像这样子的呢
  • Java9 Class newInstance 过时 Class.forName("的全限定名").newInstance(); 被替换为 Class.forName("的全限定名").getDeclaredConstructor().newInstance(); 源码说明 /** * Creates a new instance of ...

    Java9 Class类 newInstance 过时

    Class.forName("类的全限定名").newInstance();
    

    被替换为

    Class.forName("类的全限定名").getDeclaredConstructor().newInstance();
    

    源码说明

        /**
         * Creates a new instance of the class represented by this {@code Class}
         * object.  The class is instantiated as if by a {@code new}
         * expression with an empty argument list.  The class is initialized if it
         * has not already been initialized.
         *
         * @deprecated This method propagates any exception thrown by the
         * nullary constructor, including a checked exception.  Use of
         * this method effectively bypasses the compile-time exception
         * checking that would otherwise be performed by the compiler.
         * The {@link
         * java.lang.reflect.Constructor#newInstance(java.lang.Object...)
         * Constructor.newInstance} method avoids this problem by wrapping
         * any exception thrown by the constructor in a (checked) {@link
         * java.lang.reflect.InvocationTargetException}.
         *
         * <p>The call
         *
         * <pre>{@code
         * clazz.newInstance()
         * }</pre>
         *
         * can be replaced by
         *
         * <pre>{@code
         * clazz.getDeclaredConstructor().newInstance()
         * }</pre>
         */
    
    展开全文
  • Java类class newInstance()方法及示例

    千次阅读 2020-07-08 22:50:27
    class newInstance()方法 (Class class newInstance() method) newInstance() method is available in java.lang package. newInstance()方法在java.lang包中可用。 newInstance() method is used to create a new...
  • 这种形式,以前偶尔看见过,也知道是匿名内部的情况,但一直没有仔细去研究,今天特意花点时间去写了点很简单也易懂的例子,初学时需要的技术在于复杂程度,能让人看得懂的代码才是好代码,希望能帮助大家: ...
  • Java异常分类

    万次阅读 多人点赞 2012-11-27 15:46:48
    1 基本概念 java.lang.Throwable是所有异常的根 ...一般分为Checked异常和Runtime异常,所有RuntimeException及其子类的实例被称为Runtime异常,属于该范畴的异常则被称为CheckedException。 2.1...
  • java类加载及new对象的过程

    千次阅读 2017-03-17 08:41:58
    /* SubClass sub = new SubClass(); 这句话到底做了什么事情呢?...2.new SubClass()对象时,先检查有没有父类,有父类,加载器(ClassLoader)先将父类的Class文件读入内存,创建一个java.lang
  • java中,为什么有些类不需要导入?

    千次阅读 2016-07-29 19:32:22
    java中,为什么有些类不需要导入?  编程语言java 专业回答 枫神的天空 2015-07-17 11:47 javajava.lang包的内容是自动导入的,不需要手动导入,其它必须手动导入。 因为java.lang.Object是...
  • 一, 能创建对象的抽象(abstract)能创建对象。这个大家应该都知道,所以在这里就班门弄斧了。 简单回顾需要注意的几点: 包含抽象方法的,必须声明为抽象。 声明为抽象一定非要包含抽象...
  • Java集合Streamfilter的使用

    万次阅读 多人点赞 2018-05-11 11:49:42
    之前的Java集合中removeIf的使用一文写了使用removeIf来实现按条件对集合进行过滤。这篇文章使用同样是JDK1.8新加入的Stream中filter方法来实现同样的效果。
  • main函数的作用只是作为一个入口 使Java虚拟机知道从哪里执行 ...这时再new main函数所在便不会执行main函数,只会执行构造方法 例1 class kk { public kk() { System.out.println("First"); ...
  • Java抽象类不能创建对象

    万次阅读 2017-03-06 14:35:21
    抽象和接口都能创建对象,只是后边的new不能是new他们自己,但可以new他们的实现(必须是能是抽象和接口), 人们使用抽象和接口只是为了说明要干什么事,而让他们的实现去根据自己的需要去实现这些...
  • "new"可以说是Java开发者最常用的关键字,我们使用new创建对象,使用new并通过加载器来实例化任何我们需要的东西,但你是否深入了解过new在编译的瞬间都做了什么? 【51CTO独家特稿】在Java中使用new关键字...
  • Java里的new

    千次阅读 多人点赞 2019-03-03 13:48:41
    JAVA里就是创建一个新的实例,或者说一个新的对象,一个普通在没有实例化之前,就是new之前,它的属性,方法等等在内存中都是存在的。只有使用new了以后,这个的一些东西在内存中才会真的存在,也就是说只有new了...
  • java中接口是new的,当new一个接口的时候,那么这个就是一个实现该接口的匿名,这么理解正确吗
  • Java代码实体生成SQL语句(Java实体转数据库)

    万次阅读 多人点赞 2021-07-19 17:43:04
    有的时候把数据库删了,如果照着实体重新创建数据库的话比较麻烦,可以使用这个工具,把代码复制到项目里面设置一下即可把Java代码中的实体转换为SQL语句输出为一个文件,打开执行命令即可。 代码如下: ...
  • Java内部和匿名内部的用法

    万次阅读 多人点赞 2016-07-21 15:46:41
    Java内部和匿名内部的用法 【尊重原创,转载请注明出处】http://blog.csdn.net/guyuealian/article/details/51981163一、内部: (1)内部的同名方法 内部可以调用外部的方法,如果内部有同名方法...
  • JAVA减少new的次数,或利用方法new 减少内存消耗深入理解面向对象 JAVA的对象的属性 更好的编程 减少new的次数 减少内存消耗我会在今后总结下来 写入文章中...
  • 背景:  最近有同事跟我说了他面试时遇到的问题,考官问:“接口和抽象可以被new嘛?...听到这个问题,我的第一反应是肯定不行啊,直接对接口和抽象调用new,编译器都过去。但是他说,考官说可以,用匿名...
  • 如果遇到这种情况,其实原因很简单,如果你...只需要换成 import java.util.Date; 即可 通过Date来获取当前时间 : Date date = new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-d...
  • Java枚举

    千次阅读 2018-11-17 19:38:23
    文章目录1 枚举入门2 `java.lang.Enum`常用方法3 枚举的成员变量和方法4 枚举实现接口5 抽象枚举 1 枚举入门 对于对象有限且固定的,使用枚举。 使用enum关键字定义枚举。(enum关键字和class...
  • java--内部中.this与.new用法

    千次阅读 2018-07-27 09:23:07
    .this 生成对外部的引用 public class DotThis {  void f(){  System.out.println("DotThis.f()");  }  public class Inner{  public DotThis outer(){  return DotThis.this;  ...
  • Java不能使用New去创建对象的情况

    万次阅读 2017-08-15 17:35:44
    本人在学习单例模式的时候看到了这样的单例模式的创建方法: ...private static SimpleSingleton singleInstance = new SimpleSingleton(); private SimpleSingleton(){ } public static SimpleSin
  • Java匿名

    千次阅读 2016-05-30 23:18:10
    匿名,正如名字一样在java中没有名字标识的,当然了编译后还是会安排一个名字的。 下面是一个关于匿名的简单例子: public class Client { public static void main(String[] args) throws ...
  • JAVA9之后推荐使用newInstance()方法

    万次阅读 2018-12-04 23:10:33
    根据JAVA9的API 我们可以看见反射中的newInstance()方法推荐使用了,用 clazz.getDeclaredConstructor().newInstance() 代替 例如 package reflect; import java.lang.reflect.InvocationTargetException...
  • 为什么Java类B不需要引入同路径下的A就可以直接使用A? 什么意思呢?如下图,class A和B位于相同包中,在class B中可直接使用class A,而不需要import A。 package com.yangfang.service;public class B { A ...
  • 在实际开发中,某些情况下,我们可能需要频繁去创建一些对象(new),下面介绍一种,我从书上看到的,可以提高效率的方法。 首先,对于将会频繁创建的对象,我们要让这个实现Cloneable接口,因为这个优化的核心,...
  • 方式二:String b = new String(“aaa”); 两种方式都能创建字符串对象,但方式一要比方式二更优。 因为字符串是保存在常量池中的,而通过new创建的对象会存放在堆内存中。 一:常量池中已经有字符串常量”aaa” ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,063,217
精华内容 2,425,286
关键字:

java有些类不需要new

java 订阅