`

持有对象

 
阅读更多
java类型的变化
package holding;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

class Snow{}
class Power extends Snow{}
class Light extends Power{}
class Heavy extends Power{}
class Crusty extends Snow{}
class Slush extends Snow{}

/**
 * 主要是Arrays.asList的用法值得注意,以及:在用它时,继承只管上一级,除非像snow4 一样,显式地告诉编译器,Snow类型是我的目标类型
 * @author fireliuwei
 *
 */
public class AsListInterface {
	public static void main(String[] args) {
	   Snow snow = new Heavy(); 
      List<Snow> snow1 = Arrays.asList(new Crusty(),new Slush(),new Power());
      //下面这句话不能编译,原因如上
      //List<Snow> snow2 = Arrays.asList(new Light(),new Heavy());
      //snow3,snow4能编译,原因如上,
      List<Snow> snow3 = new ArrayList<Snow>();
      //Collections.addAll,参数snow3告诉了编译器,目标类型是snow
      Collections.addAll(snow3, new Light(),new Heavy());
      List<Snow> snow4 = Arrays.<Snow>asList(new Light(), new Heavy());
	}

}


下面是注意Arrays的用法
package holding;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

public class AddingGroups {
	public static void main(String[] args) {
		Collection<Integer> collection = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));
		Integer[] moreInts = { 6, 7, 8, 9, 10 };
		collection.addAll(Arrays.asList(moreInts));

		Collections.addAll(collection, 11, 12, 13, 14, 15);
		Collections.addAll(collection, moreInts);

		@SuppressWarnings("unused")
		List<Integer> list = Arrays.asList(16, 17, 18, 19, 20);
		list.set(1, 99);
		//list.add(21);运行出错,因为Arrays.asList()底层是固定大小数组,不可扩充的
	}

}

分享到:
评论

相关推荐

    think in java 第11章 持有对象

    第11章的主题是“持有对象”,这一章主要探讨了如何在Java中创建和管理对象,包括对象的引用、对象的生命周期、类与对象的关系,以及如何通过集合来存储和操作对象。以下是对这些知识点的详细解释: 1. **对象引用*...

    第十一章 持有对象

    在IT行业中,持有对象(Hold Objects)的概念通常与软件设计模式和内存管理相关。这一章的主题"第十一章 持有对象"可能探讨的是如何在程序中有效地管理和控制对象的生命周期,特别是在Java、C++或者.NET等面向对象...

    Java编程思想第11章持有对象.ppt

    【Java编程思想第11章持有对象】 在Java编程中,持有对象是一个核心概念,它涉及到如何有效地管理和操作对象集合。本章主要讨论了两个关键主题:泛型和容器类,特别是Collection家族和Map家族的其他成员,以及迭代...

    Java编程思想持有对象.pptx

    Java编程思想持有对象.pptx

    java容器(持有对象)

    在Java编程中,容器是用来存储和管理对象的类或接口,它们使得我们可以在程序中方便地组织和操作数据。在Java中,常见的容器主要分为三类:List、Set和Map,这些都是Java集合框架的重要组成部分。 首先,我们来看...

    iOS中的block是如何持有对象的

    这篇文章并不会详细介绍block在内存中到底是以什么形式存在的,主要会介绍block是如何持有并且释放对象的。文章中的代码都出自Facebook开源的用于检测循环引用的框架FBRetainCycleDetector,这是分析该框架文章中的...

    Java笔记整理:持有对象

    如果一个程序只包含固定数量的且生命周期都是已知的对象,那么这是一个非常简单的程序  JAVA实用类库提供了一套容器类,其中基本的类型是List,Set,Queue和Map。也称为集合类?  可以将任意数量的对象放置到容器...

    对象引用与对象的区别

    对象引用是一种持有对象内存地址的变量,通过它可以访问该对象的状态和行为。在Java中,对象存储在堆内存中,而对象引用通常存储在栈内存中。因此,当我们声明并初始化一个引用类型的变量时,实际上是在栈内存中创建...

    推荐清华大学出品 面向对象程序设计 C++语言 C++程序设计教程 第4章 类和对象(二) 共84页.ppt

    静态成员函数不与特定对象绑定,它们可以访问静态数据成员,但不能直接访问非静态数据成员,因为它们不持有对象的上下文。静态成员函数通常用于提供类的静态功能,如工厂方法或计数器。 友元是C++中增强类之间交互...

    Java理论与实践:它是谁的对象?

    3. 内存泄漏:虽然Java的垃圾收集能处理大部分情况,但有时由于循环引用或者长时间持有对象的引用,可能导致对象无法被回收。例如,事件监听器、线程池中的任务、缓存等,都需要开发者明确管理对象的生命周期。 4. ...

    Java对象的创建与初始化.docx

    因此,`a`并不直接持有对象的内容,而是持有到达对象的路径。 在实际编程中,理解引用和句柄的区别很重要,因为它们影响着对象的生命周期和内存管理。例如,当你将一个对象的引用赋值给另一个变量,如`A b = a;`,...

    第04章 面向对象(上) 09 对象的一对一关系

    例如,当对象A持有对象B的引用时,A的生命周期可能会影响B。此外,如果对象间的关联需要频繁变更,设计时应考虑如何高效地处理这些变化。 在设计一对一关系时,我们还应关注其在数据库映射中的实现,如使用外键约束...

    【ASP.NET编程知识】基于Unity容器中的对象生存期管理分析.docx

    4. `ExternallyControlledLifetimeManager`:同样实现单例,但Unity仅持有对象的弱引用,对象的生命周期由外部引用控制,容器不负责销毁。 5. `PerThreadLifetimeManager`:每个线程拥有自己的单例对象实例,通过`...

    [并发并行]_[初级]_[C++实现sychronized方式的对象锁]

    在多线程环境下,当一个线程持有对象锁时,其他试图获取该锁的线程将被阻塞,直到锁被释放。这样可以防止数据竞争和其他并发问题,确保数据的一致性和完整性。 在C++中,`std::mutex`类是实现互斥锁的核心。下面是...

    10_对象的实例化内存布局与访问定位.pptx

    - **直接指针访问**:另一种方式是直接持有对象实例数据或类型数据的指针。这种方式下,对象实例的内存布局中会包含一个直接指向堆上实例数据的指针,而类型信息通常存储在方法区。直接指针访问减少了指针解析的开销...

    Java编程思想-笔记.docx

    本笔记涵盖了Java编程思想的多个方面,包括访问权限控制、封装、继承、多态、接口、内部类、持有对象等。 访问权限控制 访问权限控制是为了把变动的事物与保持不变的事物区分开来。Java中有四种访问权限修饰词:...

    Java synchronized关键_动力节点Java学院整理

    这意味着在同一时间,只能有一个线程持有对象的锁。 2. **可重入性**:一个线程已经获得了某个对象的锁,它还可以再次获取该对象的其他`synchronized`代码块或方法的锁,这就是所谓的可重入性。这不会导致死锁,...

    高级软件工程CORBA概述.ppt

    它们持有对象引用,通过ORB调用对象的方法,但并不关心对象的实际位置或实现方式。客户可以是程序或进程,且一个对象的实现可能本身就是另一个对象的客户。 4. **对象实现的结构**:对象实现提供了对象实例的数据和...

    Android性能优化.pdf

    例如,静态集合类如HashMap如果未及时设置为null,会持续持有对象;忘记移除监听器,如未调用removeEventListener或unregisterReceiver;不关闭数据连接,如Cursor、ContentProvider、IO流和Socket;内部类持有的强...

Global site tag (gtag.js) - Google Analytics