java匿名类-你好,new一个方法不是生成一个对象,怎么就生成了一个匿名类呢

问题描述

你好,new一个方法不是生成一个对象,怎么就生成了一个匿名类呢

你好,new一个方法不是生成一个对象,怎么就生成了一个匿名类呢

我对new关键词的用法不是很清楚

解决方案

先看段伪代码
abstract class Father(){
....
}

public class Test{
Father f1 = new Father(){ .... } //这里就是有个匿名内部类
}
一般来说,new 一个对象时小括号后应该是分号,也就是new出对象该语句就结束了。
但是出现匿名内部类就不一样,小括号后跟的是大括号,大括号中是该new 出对象的具体的实现方法。
因为我们知道,一个抽象类是不能直接new 的,必须先有实现类了我们才能new出它的实现类。
上面的伪代码就是表示new 的是Father的实现类,这个实现类是个匿名内部类。
其实拆分上面的匿名内部类可为
class SonOne extends Father{
... //这里的代码和上面匿名内部类,大括号中的代码是一样的
}
public class Test{
Father f1 = new SonOne() ;
}

解决方案二:

abstract class Animal {
public abstract void cry();
}

class TestCry {
public void testCry(Animal animal) {
animal.cry();
}
}

public class Example{
public static void main(String[] args) {

    TestCry  cry = new TestCry () ;
    cry.testCry(new Animal (){
            public void cry() {
                System.out.println("Cat is crying!");
            }
    });
     cry.testCry(new Animal (){
            public void cry() {
                System.out.println("Dog is crying!");
            }
    });
    // ... 省略其他
}

}

先看段伪代码
abstract class Father(){
....
}

public class Test{
Father f1 = new Father(){ .... } //这里就是有个匿名内部类
}
一般来说,new 一个对象时小括号后应该是分号,也就是new出对象该语句就结束了。
但是出现匿名内部类就不一样,小括号后跟的是大括号,大括号中是该new 出对象的具体的实现方法。
因为我们知道,一个抽象类是不能直接new 的,必须先有实现类了我们才能new出它的实现类。
上面的伪代码就是表示new 的是Father的实现类,这个实现类是个匿名内部类。
其实拆分上面的匿名内部类可为
class SonOne extends Father{
... //这里的代码和上面匿名内部类,大括号中的代码是一样的
}
public class Test{
Father f1 = new SonOne() ;
}

解决方案三:

学习了

时间: 2024-10-24 17:40:39

java匿名类-你好,new一个方法不是生成一个对象,怎么就生成了一个匿名类呢的相关文章

android中内容提供者的本质是一个类,那么广播接收器的本质是一个方法吗

问题描述 android中内容提供者的本质是一个类,那么广播接收器的本质是一个方法吗 android中内容提供者的本质是一个类,那么广播接收器的本质是一个方法吗 解决方案 广播接收器,也可以设计成一个类,并不一定是方法. 就算现在的 Android 设计成一个方法,但也并不是说必须,或者只能设计成一个方法.

javascript Base类 包含基本的方法_js面向对象

复制代码 代码如下: <script type="text/javascript"> function Base(){} //根抽象类 Base.toBase=function(){ //将一个对象转化成Base类的实例的方法 return new Base(); } Base.inherit=function(parent){ //用于继承Base类的实例的方法 var F=function(){} F.prototype=parent; return new F; }

easyui-easyUI里面有什么方法能够执行完一个方法之后立即执行另一个方法

问题描述 easyUI里面有什么方法能够执行完一个方法之后立即执行另一个方法 在easyUI中需要用一个方法是通过dategrid里面的数据生成一个动态数组,如何能够在加载完dategrid之后立即执行这个方法,获取dategrid里面的数据 解决方案 Flash耗时较长的方法执行完之后再执行另一个方法 as3.0 解决方案二: 初始化的时候加上 onLoadSuccess:function(){ //写你的方法 } $('#dg').datagrid('getData'); //获取加载的所有

asp.net-一个方法的参数是一个对象 怎么取到对象中的字段?详情请看下面的一些东西

问题描述 一个方法的参数是一个对象 怎么取到对象中的字段?详情请看下面的一些东西 三层里的东西 我的insert方法会传入一个 model类的实例化的对象 但是dal层中的 insert(T t) 怎么得到传入model类的实例化的对象 中的字段啊在一般处理程序中Model.T_user user=new Model.T_user();BLL.Model.T_use Duser=new BLL.Model.T_use();user.name=Bob;user.pwd=123;在DAL中publi

java监听-java中匿名类作为一个方法的参数的时候是不是默认返回一个匿名对象

问题描述 java中匿名类作为一个方法的参数的时候是不是默认返回一个匿名对象 java中匿名类作为一个方法的参数的时候是不是默认返回一个匿名对象 比如用在监听方法当中作为参数的时候 解决方案 可以这么理解,通常是创建一个匿名类的实例然后作为参数传递给指定方法 . 解决方案二: 匿名类,作为参数是返回相应的匿名对象. 具体还是要看调用的函数有参数要求吧,参数是一个对应的匿名类,或者其父类,使用它就没有问题.

java语法-java中一个方法的参数既可以放匿名对象,也可以放匿名类,这么理解对吗

问题描述 java中一个方法的参数既可以放匿名对象,也可以放匿名类,这么理解对吗 java中一个方法的参数既可以放匿名对象,也可以放匿名类,这么理解对吗 解决方案 看需要,一般来说匿名类用来实现接口.匿名对象就是一般的对象.单单从语法上来说,都可以. 解决方案二: 还是与些区别的,匿名类用来实现接口.匿名对象其实就是一般的对象.

线程-java中下面这段代码是一个匿名对象传入一个匿名对象在调用start方法吗

问题描述 java中下面这段代码是一个匿名对象传入一个匿名对象在调用start方法吗 new Thread(new Runnable() {.....省略代码若干..........}).start(); 上面这段代码是一个匿名对象传入一个匿名对象在调用start方法吗 还是一个匿名类传入一个匿名对象再调用start方法 我有点分不清匿名对象和匿名类呢 解决方案 new Runnable() {.....省略代码若干..........} 匿名类,因为Runnable是接口,需要实现类 new

java static-假设有一个类,我只对这个类的引用做一个声明,那么这个类中的static方法会被初始化吗

问题描述 假设有一个类,我只对这个类的引用做一个声明,那么这个类中的static方法会被初始化吗 假设下面这种情况,test1中的do方法会被初始化吗? public class test{ public static void main(string []args){ test1 t: } } class test1{ int i: static void do(){} } 解决方案 第一次访问的含义是,访问了这个静态类中的任何方法.属性.字段,那么所有的属性都会被初始化. 解决方案二: 方法

java类的问题-用java 写一个方法,能够判断任意整数是否是素数

问题描述 用java 写一个方法,能够判断任意整数是否是素数 用java代码写一个方法,能够判断任意整数是否是素数......... 解决方案 public class Num{ public static void main(String args[]){ int m; boolean tag=true; System.out.print("Please enter a num:"); try{ m=(int)System.in.read(); for(int i=m-1;i>