在Nutz中,存在大量需要使用匿名内部类的情况,很多童鞋都对传值很困惑,所以我这里说明一下
传入:
//匿名内部类,只能访问final的本地变量及方法参数
public void addUser(final String name, String passwd, final String userType) {
User user = null;
if ("admin".equal(userType))
user = new AdminUser(name, passwd); //仅作演示.
else
user = new User(name, passwd);
final User _user = user; //因为user变量不能设置为final,所以需要新加一个变量来中转
Trans.run(new Atom(){
public void run() {
dao.insert(_user);
if (log.isDebugEnable())
log.debugf("Add user id=%d, name=%s , type=%s", _user.getId(), name, userType);
}
});
}
传出(获取方法返回值等等):
方法1 – 对象数组法 通过一个final的Object对象数组,存放需要的值
public long countUser(final String userType) {
final Object[] objs = new Object[1];
Trans.run(new Atom(){
public void run() {
objs[0] = dao.count(User.class, Cnd.where('userType', '=', userType));
}
});
return ((Number)objs[0]).longValue();
}
方法2 – ThreadLocal法 通过一个ThreadLocal来存放结果,这个ThreadLocal可以是静态的,供全app使用的
private static final ThreadLocal re = new ThreadLocal(); //自行补上泛型Object
public long countUser(final String userType) {
Trans.run(new Atom(){
public void run() {
re.set(dao.count(User.class, Cnd.where('userType', '=', userType)));
}
});
return ((Number)re.get()).longValue(); //严谨一点的话,应该将ThreadLocal置空
}
方法3 – Molecule法 Molecule类是Nutz内置的抽象类类,实现Runnable和Atom接口,添加了两个获取/设置值的方法.
public long countUser(final String userType) {
Molecule mole = new Molecule() { //需要自行补齐泛型
public void run() {
setObj(dao.count(User.class, Cnd.where('userType', '=', userType)));
}
};
Trans.run(mole);
return ((Number)mole.getObj()).longValue();
}
http://wendal.net/404.html
分享到:
相关推荐
anonymousInner.java 匿名内部类 base.java 定义一个基类 BaseColors.java 一个简单的接口 basePoint.java 一个测试用的基类 Colorable.java 一个子接口 ColoredPoint.java 一个测试用子类 common.java 一个...
4 15 1和类有关的匿名类 4 15 2和接口有关的匿名类 4 16异常类 4 16 1try catch语句 4 16 2自定义异常类 4 17Class类 4 17 1获取类的有关信息 4 17 2使用Class实例化一个对象 4 18基本类型的类包装 4 18 1Double类和...
- 内部类是定义在一个类内部的类,可以是成员内部类、局部内部类、匿名内部类等,提供了更复杂的封装和抽象能力。 **JAVA中的文档注释**: - 使用`/** ... */`格式的注释可以生成Javadoc,这是一种自动生成API文档...
### Java基础复习知识点详解 #### 一、Java语言特点 - **高级编程语言**:Java是一种面向对象的高级编程语言,... - 匿名内部类 以上是关于Java基础复习的知识点详解,对于理解Java的核心概念和编程实践非常重要。
7.2.2 匿名内部类 217 7.2.3 使用enum枚举常数 221 7.3 重点复习 224 7.4 课后练习 224 chapter8 异常处理 231 8.1 语法与继承架构 232 8.1.1 使用try、catch 232 8.1.2 异常继承架构 235 8.1.3 要...
9. **匿名内部类与局部类** - 在方法内部定义的类,无需命名,常用于事件处理和接口实现。 10. **Lambda表达式** - Java 8引入的新特性,简化了函数式接口的实现,使代码更简洁。 通过“Java方法学习实例收集”...
#### 2.20 “+”操作符在 Java 内部是如何实现字符串连接的? 在 Java 中,字符串连接使用 `+` 操作符时,实际上是创建了一个新的 `StringBuilder` 对象来进行拼接,最后转换成 `String` 返回。 #### 2.21 == 和 ...
Java支持四种类型的内部类: - **私有类**:定义在另一个类内部,不能被外部访问。 - **嵌套类**:在类的外部定义,但没有访问修饰符。 - **局部类**:定义在方法中,只能在该方法内部使用。 - **匿名类**:没有...
- 匿名内部类 #### 集合 - **概念**:集合是一系列对象的容器,提供了添加、删除、查找等功能。 - **主要类型**: - `List`:有序的集合,允许重复元素。 - `Set`:不允许重复元素的集合。 - `Map`:存储键值...
2. **Anonymous Inner Class**:匿名内部类可以继承其他类,也可以实现接口,但它们没有名字,通常用于简洁地实现回调或适配器模式。 3. **Static Nested Class 和 Inner Class**:静态嵌套类(static nested class...
- Java采用传值方式,基本类型传递值,引用类型传递对象引用,但不能改变引用本身。 `static` 关键字: - 用于声明静态变量、静态方法和静态代码块,它们属于类而非对象,可以直接通过类名访问。 静态方法的注意...
- 传值调用(Pass by Value)是Java默认的参数传递方式,意味着函数内部无法改变实参的原始值。 3. **返回值** - 函数可以有返回值,也可以没有。如果函数有返回值,需要指定返回类型。没有返回值的函数使用`void...
3. **建立独立运行的窗口界面并使用匿名类:** 如使用JFrame和JButton等Swing组件。 4. **使用Swing组件:** 如JButton、JTextField等。 5. **使用自定义对话框与内部类:** 如使用JOptionPane显示消息框。 **实验...
在这个例子中,`o.equals("Fred")` 会返回 `true`,因为 `o` 实际上是匿名内部类的一个实例,它的 `equals()` 总是返回 `true`。 9. **Java 数据类型与运算**: Java 中的字节变量 (`byte`) 只能容纳 -128 到 127 ...
- **匿名内部类**:没有名称的内部类,常用于实现接口或抽象类。 #### 18. Java中的内部接口是什么? - **内部接口**:定义在另一个类内部的接口。 - **应用场景**:主要用于限制接口的可见范围,通常不对外公开。...
这一步在使用匿名内部类时是必需的,因为`OnClickListener`的`context`参数是`Context`类型,而不是具体的`Activity`类型。 总结一下,Android中的`Activity`和`AlertDialog`值传递主要通过创建`AlertDialog`,设置...
12. **匿名内部类与Lambda表达式**:在Java 8及以上版本中,可以使用lambda表达式简化方法的定义,特别是对于无状态、单方法的接口。 从压缩包文件名"method_program-master"来看,这可能是一个Git仓库的主分支,...
在Python中,函数参数的传递遵循“传值”而非“传引用”的原则。当传递不可变数据类型(如整数、字符串等)时,实际上是将该数据类型的值复制一份传递给函数;而对于可变数据类型(如列表、字典等),则是将该对象的...
- 使用匿名内部类实现点击事件处理逻辑。 4. **启动与关闭Activity** - 启动Activity: `Intent i = new Intent(Context.class, TargetActivity.class); startActivity(i);` - 关闭Activity: `finish();`,若需...