精华内容
下载资源
问答
  • java中的匿名类

    2017-08-15 22:14:18
    java中的匿名类 匿名类实例: A接口 public interface A { void show(); void play(int m); } 测试类 public class LastTest { public static void main(String[] args) { //匿名类 //匿名...

    java中的匿名类



    匿名类实例:

    A接口

    public interface A {
    
    	void show();
    	void play(int m);
    }

    测试类

    public class LastTest {
    	
    	public static void main(String[] args) {
    		//匿名类		
    		//匿名实现类
    		A a=new A() {
    			
    			@Override
    			public void show() {
    				// TODO Auto-generated method stub
    				System.out.println("打印内容");
    			}
    			
    			
    			@Override
    			public void play(int m) {
    				// TODO Auto-generated method stub
    				//return null;
    			}
    		};
    		a.show();
    		//匿名子类(匿名抽象类)
    		D d=new D() {
    		};
    		System.out.println(d.toString());
    	}
    }
    
    abstract class D{
    	
    }
    展开全文
  • JAVA中的匿名类

    2017-07-23 10:38:15
    JAVA中匿名内部类的用法十分令人费解。匿名内部与正规继承相比有些受限。

    在JAVA中,匿名内部类的用法十分令人费解。匿名内部类与正规的继承相比有些受限,因为匿名类既可以扩展类,又可以实现接口,但是两者不能兼有,而且如果实现接口时,仅可以实现一个接口。对于匿名类而言,实例初始化实际效果就是构建器的效果,但我们不能重载实例初始化方法,所以我们仅有一个这样的构造器。看如下一段代码:

    package access;
    
    interface Service{
    	void method1();
    	void method2();
    }
    interface ServiceFactory{
    	Service getService();
    }
    class Implementation1 implements Service{
    	private Implementation1(){}
    	@Override
    	public void method1() {
    		// TODO Auto-generated method stub
    		System.out.println("Implementation1 method1");
    	}
    
    	@Override
    	public void method2() {
    		// TODO Auto-generated method stub
    		System.out.println("Implementation1 method2");
    	}
    	public static ServiceFactory factory = 
    			new ServiceFactory(){
    				public Service getService(){
    					return new Implementation1();
    				}
    			};
    }
    class Implementation2 implements Service{
    	private Implementation2(){}
    	@Override
    	public void method1() {
    		// TODO Auto-generated method stub
    		System.out.println("Implementation2 method1");
    	}
    
    	@Override
    	public void method2() {
    		// TODO Auto-generated method stub
    		System.out.println("Impelmentation2 method2");
    	}
    	public static ServiceFactory factory = 
    			new ServiceFactory(){
    		public Service getService(){
    			return new Implementation2();
    		}
    	};
    }
    public class Factories {
    	public static void serviceConsumer(ServiceFactory fact){
    		Service s = fact.getService();
    		s.method1();
    		s.method2();
    	}
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		serviceConsumer(Implementation1.factory);
    		serviceConsumer(Implementation2.factory);
    	}
    
    }
    
    此程序的输出结果为:


    ServiceFactor方法将返回值的生成与表示这个返回值的类的定义结合在了一起,另外这个类是匿名的,看起来我们似乎要创建一个ServiceFactor对象,但是在分号之前我们又插入了一个类的定义。这种奇怪的语法表示的意思是:创建一个继承自ServiceFactor的匿名类的对象。通过new表达式返回的引用被自动向上转型为对ServiceFactor的引用。

    用于Implementation1和Implementation2的构造器都可以是private的并且没有任何必要去创建工厂的具名类,另外我们仅需要单一的工厂对象,因此被创建为Service实现中的一个static域。

    首先在main函数中调用类Factories中的static方法用于生产接口Service对象s,s生成的对象具体是什么取决于该static方法传递的参数,比如说Implementation1.factory这个参数,实际上在类Implementation1中的factory为static类型的一个匿名类的生成,即创建了一个继承自ServiceFactor的匿名类的对象,在匿名类中实现了接口ServiceFactory,所以在类Implementation1继承接口的时候仅继承了Service。之后可以顺利传递给类Factories中的static方法的参数s,进行之后步骤的生成与输出。

    展开全文
  • java 中的匿名类

    2018-05-29 11:11:15
    匿名内部也就是没有名字内部正因为没有名字,所以匿名内部只能使用一次,它通常用来简化代码编写但使用匿名内部还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部来实现抽象方法...

    匿名内部类也就是没有名字的内部类

    正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写

    但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口

     

    实例1:不使用匿名内部类来实现抽象方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    abstract class Person {
        public abstract void eat();
    }
     
    class Child extends Person {
        public void eat() {
            System.out.println("eat something");
        }
    }
     
    public class Demo {
        public static void main(String[] args) {
            Person p = new Child();
            p.eat();
        }
    }

    运行结果:eat something

    可以看到,我们用Child继承了Person类,然后实现了Child的一个实例,将其向上转型为Person类的引用

    但是,如果此处的Child类只使用一次,那么将其编写为独立的一个类岂不是很麻烦?

    这个时候就引入了匿名内部类

     

    实例2:匿名内部类的基本实现

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    abstract class Person {
        public abstract void eat();
    }
     
    public class Demo {
        public static void main(String[] args) {
            Person p = new Person() {
                public void eat() {
                    System.out.println("eat something");
                }
            };
            p.eat();
        }
    }

    运行结果:eat something

    可以看到,我们直接将抽象类Person中的方法在大括号中实现了

    这样便可以省略一个类的书写

    并且,匿名内部类还能用于接口上

     

    实例3:在接口上使用匿名内部类

    interface Person {
        public void eat();
    }
     
    public class Demo {
        public static void main(String[] args) {
            Person p = new Person() {
                public void eat() {
                    System.out.println("eat something");
                }
            };
            p.eat();
        }
    }

    运行结果:eat something

     

    由上面的例子可以看出,只要一个类是抽象的或是一个接口,那么其子类中的方法都可以使用匿名内部类来实现

    最常用的情况就是在多线程的实现上,因为要实现多线程必须继承Thread类或是继承Runnable接口

     

    实例4:Thread类的匿名内部类实现

    public class Demo {
        public static void main(String[] args) {
            Thread t = new Thread() {
                public void run() {
                    for (int i = 1; i <= 5; i++) {
                        System.out.print(i + " ");
                    }
                }
            };
            t.start();
        }
    }

    运行结果:1 2 3 4 5

     

    实例5:Runnable接口的匿名内部类实现

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Demo {
        public static void main(String[] args) {
            Runnable r = new Runnable() {
                public void run() {
                    for (int i = 1; i <= 5; i++) {
                        System.out.print(i + " ");
                    }
                }
            };
            Thread t = new Thread(r);
            t.start();
        }
    }

    运行结果:1 2 3 4 5

    展开全文
  • Java中的匿名类

    2012-11-14 14:28:00
    匿名类适合那些只需要使用一次类 public abstract class AnonymousClassDesk { public abstract double getPrice(); public abstract String getName(); } public class Desk extends AnonymousClassDesk ...

    匿名类适合那些只需要使用一次的类

    public abstract class AnonymousClassDesk
    {
    public abstract double getPrice();

    public abstract String getName();

    }

    public class Desk extends AnonymousClassDesk
    {
    @Override
    public double getPrice()
    {
    return 100;
    }

    @Override
    public String getName()
    {
    return "普通书桌";
    }

    }

    public static void main(String[] args)
    {
    AnonymousClassDesk desk = new AnonymousClassDesk() {

    @Override
    public double getPrice()
    {
    return 100;
    }

    @Override
    public String getName()
    {
    return "匿名书桌";
    }
    };

    System.out.println(desk.getName());
    }

    不仅可以使抽象类,也可以是接口。匿名类没有什么特别的地方,同样还是要实现需要实现的方法。

    展开全文
  • java中匿名类 Anonymous class in Java is a class without name. Its name is decided by the compiler. It enables us to declare and instantiate the class at the same time. It is like local class except ...
  • Java技巧:用匿名类来实现简化程序调试在Java中,匿名类(Anonymous inner classes)多用来处理事件(event handle)。但其实,它们对于debug也很有...Java提供的匿名类,可以很好的解决这个问题。通常,当我们继承一...
  • 内部的外部的成员变量在内部仍然有效,内部类中的方法可以调用外部的方法。不论静态还是非静态的,内部都可以直接调用外部类中的属性。内部体中不可以声明变量和方法。内部可以由外部使用...
  • 匿名类 匿名类是一个没有名称内部类,并且只能创建...Java引入了匿名类的创建,以减少代码复杂性。如果我们创建一个单独类来实现一个接口并使用它实例来调用该方法,则会产生开销。而当我们从不在其他任何地方...
  • java中的匿名类用法

    千次阅读 2017-12-23 19:00:48
    匿名内部也就是没有名字内部 正因为没有名字,所以匿名内部只能使用一次,它通常用来简化代码编写 但使用匿名内部还有个前提条件:必须继承一个父类或实现一个接口   实例1:不使用匿名内部...
  • 我收到此消息:无法在以其他方法定义内部类中引用非最终变量ConfirmButtonconfirmButton.setOnClickListener(new View.OnClickListener() {public void onClick(View view) {confirmButton.setEn...
  • 甲线程是可以同时与该程序其他部分被执行功能。所有Java程序都有至少一个称为主线程线程,该线程...我们还可以使用匿名类创建线程,而无需在下面程序扩展Thread类。示例publicclassAnonymousThreadTest{pu...
  • java中的匿名类与匿名类面试题总结

    千次阅读 2016-11-22 21:49:56
    如:B定义在C,B就是C内部。 class C{ //B为A内部 class B{ } } 2.访问特点: (1)内部可以直接访问外部类的成员,包括私有成员; (2)外部访问内部成员,必须创建对象,通过...
  • 在看《java核心技术卷I》时候再TreeSet章节,看到了使用匿名内部类的实例,好奇后查了下相关信息,有两个博客写很好,以后还需细看 java匿名内部 CSDNjava匿名内部 先说下TreeSetTest, ...
  • 这就要采用另一种形式的new语句,如下所示: new 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩
  • Java中的匿名内部

    2017-05-31 09:24:30
    Java中的匿名类 以Thread类和Runnable接口为例
  • 这就要采用另一种形式的new语句,如下所示: new 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类...
  • 匿名内部也就是没有名字内部正因为没有名字,所以匿名内部只能使用一次,它通常用来简化代码编写但使用匿名内部还有个前提条件:必须继承一个父类或实现一个接口。实例1:不使用匿名内部来实现抽象方法1 ...
  • java 中匿名内部类的实例详解发布于 2020-12-7|复制链接摘记: java 中匿名内部类的实例详解原来面貌:```javaclass TT extends Test{void show() {System.out.println(s+"~~~哈哈");System.out.println("超级女声...
  • 匿名内部也就是没有名字内部正因为没有名字,所以匿名内部只能使用一次,它通常用来简化代码编写但使用匿名内部还有个前提条件:必须继承一个父类或实现一个接口实例1:不使用匿名内部来实现抽象方法...
  • 主要介绍了 java中的匿名内部总结的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,133
精华内容 3,253
关键字:

java中的匿名类

java 订阅