泛型中的元组类库

在方法中,使用return语句只能一次返回一个对象,要是想返回多个方该怎么办呢?

解决办法就是:创建一个对象,用它来持有想要返回的多个对象。

 1 package com.wpf.泛型;
 2
 3 /**元组类库:
 4  * 有时候需要一个方法返回多了对象,可是return语句只允许返回单个对象。
 5  * 我们可以通过泛型来解决这个问题,这个概念就是元组:它是将一组对象直接打包存储于其中的一个单一对象。
 6  * 这个容器允许读取其中的元素,但是不允许向其中存放新的对象。
 7  */
 8
 9 public class TwoTuple<A, B> {
10     public final A first;
11     public final B second;
12
13     public A getFirst() {
14         return first;
15     }
16
17     public B getSecond() {
18         return second;
19     }
20
21     public TwoTuple(A first, B second) {
22         super();
23         this.first = first;
24         this.second = second;
25     }
26
27     @Override
28     public String toString() {
29         return "TwoTuple [first=" + first + ", second=" + second + "]";
30     }
31
32     /**
33      * first与second不是应该声明为private吗?这不违背java中的安全机制吗?
34      * 答:仔细研究一下这个类的安全性,外界可以访问first和second两个成员变量,但是他们却没有办法修改这两个对象,
35      * 这是因为他们使用了final这个修饰语。这是一种十分聪明的设计。
36      * 但是一旦创建了这个对象,无法修改其属性值了
37      */
38     public static void main(String[] args) {
39         TwoTuple<Integer, String> twoTuple = new TwoTuple<Integer, String>(25,
40                 "二十五");
41         System.out.println(twoTuple.first);
42         System.out.println(twoTuple.second);
43
44     }
45
46 }
时间: 2024-10-09 16:39:04

泛型中的元组类库的相关文章

Java泛型中的PECS原则

今天在写代码的时候使用到了这样一个方法签名: public void foo(Map<String, String> map); 在写这个参数的时候正好在想一些关于泛型的东西,于是: public void foo(Map<? extends String, ? extends String> map); 这两种写法有什么区别呢?记得以前和同学讨论过这个问题,但后来没有记下来,渐渐又淡忘了.今天又去翻了好多资料,总算找到一些可以参考的,赶紧记在这里方便以后温故知新啦.好了,言归正传

Python中的元组

一.元组(tuple) 元组基本上就像一个不可改变的列表.与列表一样支持任意类型的元素.支持嵌套以及常见的序列操作. 元组编写在圆括号中. >>> info = ('林间','Man',1991,7,13,True) #支持不同类型 >>> info = ('林间','Man',(1991,7,13),True) #支持嵌套 >>> info[0] #支持常见的序列操作 '林间' >>> info[:2] #切片 ('林间', 'Ma

泛型中的类型约束和类型推断

前一篇文章介绍了泛型的基本概念.在本文中,我们看一下泛型中两个很重要的特性:类型约束和类型推断. 类型约束 相信你还记得前面一篇文章中的泛型方法,在这个泛型方法中,我们就使用了类型约束. 类型约束(type constraint)进一步控制了可指定的类型实参,当我们创建自己的泛型类型或者泛型方法的时候,类型约束是很有用的. 回到前一篇例子中的泛型方法,这个泛型方法就要求可指定的类型实参必须实现了IComparable接口. 为什么会有这个约束呢?原因很简单,因为我们在泛型方法的实现中直接调用T类

Swift中访问元组

在Swift中,获取元组中某个位置的值,可以通过三种方法: 1.使用元组变量/常量 @Author: twlkyao let http404Error = (404, "Not Found") let (statusCode, statusMessage) = http404Error 这样statusCode常量就表示404,而statusMessage常量就表示"Not Found".可以使用下划线"_"对不需要的值进行忽略. 2.使用下标

Java泛型中extends和super的理解(转)

E – Element (在集合中使用,因为集合中存放的是元素) T – Type(Java 类) K – Key(键) V – Value(值) N – Number(数值类型) ? – 表示不确定的java类型(无限制通配符类型) S.U.V – 2nd.3rd.4th types Object – 是所有类的根类,任何类的对象都可以设置给该Object引用变量,使用的时候可能需要类型强制转换,但是用使用了泛型T.E等这些标识符后,在实际用之前类型就已经确定了,不需要再进行类型强制转换. ?

在Eclipse中查看JDK类库的源代码

在Eclipse中查看JDK类库的源代码!!! 设置: 1.点 “window”-> "Preferences" -> "Java" -> "Installed JRES" 2.此时"Installed JRES"右边是列表窗格,列出了系统中的 JRE 环境,选择你的JRE,然后点边上的 "Edit...", 会出现一个窗口(Edit JRE) 3.选中rt.jar文件的这一项:“c:\p

泛型中的协变和逆变

[泛型中的协变和逆变] 协变指能够使用比原始指定的派生类型的派生程度更大的类型,逆变指能够使用比原始指定的派生类型的派生程度更小的类型. 协变与逆变的本质就是参数的替换.逻辑不变,只进行参数的替换,以实现更高程序的复用. 通常,协变类型参数可用作委托的返回类型,而逆变类型参数可用作参数类型. 对于接口,协变类型参数可用作接口的方法的返回类型,而逆变类型参数可用作接口的方法的参数类型. 协变是out,逆变是in. 协变的例子: 逆变的例子,When the delegate of type Act

编写高质量代码改善C#程序的157个建议[优先考虑泛型、避免在泛型中声明静态成员、为泛型参数设定约束]

前言 泛型并不是C#语言一开始就带有的特性,而是在FCL2.0之后实现的新功能.基于泛型,我们得以将类型参数化,以便更大范围地进行代码复用.同时,它减少了泛型类及泛型方法中的转型,确保了类型安全.委托本身是一种引用类型,它保存的也是托管堆中对象的引用,只不过这个引用比较特殊,它是对方法的引用.事件本身也是委托,它是委托组,C#中提供了关键字event来对事件进行特别区分.一旦我们开始编写稍微复杂的C#代码,就肯定离不开泛型.委托和事件.本章将针对这三个方面进行说明. 这里也有一篇之前我对泛型的简

在同一个项中引用同一类库的多个版本

如何在同一个项中引用同一类库的多个版本? 在同一项目,有时会遇到要同时引一个类库多个版本的需求,例如大部分功能都是基于A 类库的1.0版本实现,现在有个特别的功能只在A类库的2.0版本才有,最好的办法是基于A库2.0版本再全部重写一下但实际情况却是,所有功能已经很稳定了,不可能为了增加一个小功能而要全部重写,这时候就有必要同时引用A库的两个版本了,1.0和2.0版本 做法:假设A库的文件为A.dll1.将A库1.0文件命名为A1.dll2.将A库2.0文件命名为A2.dll3.在项目中同时引用A