Java内部抽象类的匿名类初始化
说在前面的话,以前写过一次这个变态代码,后来重构,把那个new的语法简化了,最近又要整,差点都想不起来了,留个文档把
1、下面这个案例更变态,抽象类还有一个个泛型类:首先内部抽象类的定义:
- /*
- *
- * Created by stone
- *
- *
- */
- package net.stoneapp.quanshi.qsand.application;
- import android.app.Application;
- import android.util.Log;
- import android.widget.Toast;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
- import net.stoneapp.quanshi.qsand.utils.AndUtils;
- import cn.jpush.android.api.JPushInterface;
- import retrofit2.Call;
- import retrofit2.Response;
- import rx.Subscriber;
- /**
- * Created by dengel on 15/12/28.
- */
- public class QsandApplication extends Application {
- AndUtils mAndUtils;
- @Override
- public void onCreate() {
- super.onCreate();
- mAndUtils = new AndUtils(this);
- JPushInterface.setDebugMode(true);
- JPushInterface.init(this);
- }
- public AndUtils getAndUtils(){
- return mAndUtils;
- }
- public abstract class JSONSubscriber extends Subscriber<JSONObject> {
- @Override
- public void onCompleted() {
- }
- @Override
- public void onError(Throwable e) {
- if(e.getMessage()!=null) {
- Log.i("Subscriber Error", e.getMessage());
- Toast.makeText(QsandApplication.this, e.getMessage(), Toast.LENGTH_LONG).show();
- }
- e.printStackTrace();
- }
- }
- public abstract class Callback<T> implements retrofit2.Callback<T>{
- @Override
- public void onResponse(Call<T> call, Response<T> response) {
- int status = response.code();
- if(status>=400 && status<500){
- JSONObject jsonObj = (JSONObject)JSON.parse(response.errorBody().toString());
- Toast.makeText(QsandApplication.this,jsonObj.getString("detail"),Toast.LENGTH_SHORT).show();
- }
- }
- @Override
- public void onFailure(Call<T> call,Throwable t) {
- if(t.getMessage()!=null) {
- Log.e("Callback Error:", t.getMessage());
- Toast.makeText(QsandApplication.this, t.getMessage(), Toast.LENGTH_LONG).show();
- }
- t.printStackTrace();
- }
- }
- }
2、匿名类初始化方法:
- public void postVerifyCode(View view){
- mMobilelView.setError(null);
- String mobile = mMobilelView.getText().toString();
- boolean cancel = false;
- View focusView = null;
- if (TextUtils.isEmpty(mobile) || !StringUtils.isMobileNumber(mobile)) {
- mMobilelView.setError(getString(R.string.error_invalid_mobile));
- focusView = mMobilelView;
- cancel = true;
- }
- if (cancel){
- focusView.requestFocus();
- }else {
- showProgress(true);
- Services.AuthService service = Services.getRetrofit().create(Services.AuthService.class);
- User user = new User();
- user.setMobile(mobile);
- final QsandApplication qsandApplication = (QsandApplication)getApplication();
- service.postVerifyCode(user).enqueue(qsandApplication.new Callback<User>(){//重点就在这句new的语法
- @Override
- public void onResponse(Call<User> call, Response<User> response) {
- }
- });
- }
- }
Java内部抽象类的匿名类初始化的更多相关文章
- [改善Java代码]建议40:匿名类的构造函数很特殊
建议40: 匿名类的构造函数很特殊 在上一个建议中我们讲到匿名类虽然没有名字,但可以有一个初始化块来充当构造函数,那这个构造函数是否就和普通的构造函数完全一样呢?我们来看一个例子,设计一个计算器,进行 ...
- java语言中的匿名类与lambda表达式介绍与总结 (Anonymous Classes and Lambda Expressions)
2017/6/30 转载写明出处:http://www.cnblogs.com/daren-lin/p/anonymous-classes-and-lambda-expressions-in-java ...
- 转:【深入Java虚拟机】之三:类初始化
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17845821 类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的Jav ...
- 【深入Java虚拟机】之三:类初始化
类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的Java程序代码.虚拟机规范严格规定了有且只有四种情况必须立即对类进行初始化: 遇到new.getstatic.putstatic ...
- Java通过接口实现匿名类的实例
package com.chase.test; /** * 通过接口实现匿名类的实例 * * @author Chase * * @date 2013-10-18 下午04:28:17 * * @ve ...
- Java 内部类、成员类、局部类、匿名类等
Java各种称呼类详解 Java有各种各样类,内部类.嵌套类.成员类.局部类(本地类).静态类.匿名类.文件类以及这些组合起来的称呼类,成员内部类,成员匿名类,成员嵌套类,本地匿名类等,真是多的不行, ...
- Java虚拟机 - 类初始化
[深入Java虚拟机]之三:类初始化 类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的Java程序代码.虚拟机规范严格规定了有且只有四种情况必须立即对类进行初始化: 遇到new. ...
- java新手笔记27 监听器类
1.外部类监听 package com.yfs.javase; import java.awt.Button; import java.awt.FlowLayout; import java.awt. ...
- Java入门教程十(抽象类接口内部类匿名类)
抽象类(abstract) 一个类只定义了一个为所有子类共享的一般形式,至于细节则交给每一个子类去实现,这种类没有任何具体的实例,只具有一些抽象的概念,那么这样的类称为抽象类. 在面向对象领域,抽象类 ...
随机推荐
- Uva - 230 - Borrowers
AC代码: #include <iostream> #include <cstdio> #include <cstdlib> #include <cctype ...
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(十七)
现在玩家选择机器人后,可以在屏幕上或手臂上点击来移动robot's arm了. 但是玩家选择一个机器人后没有视觉效果来表明哪个机器人被选中.玩家做了一个操作后没有视觉反馈会惹恼强迫症用户滴 ;) 这篇 ...
- Leetcode_14_Longest Common Prefix
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/40555783 Longest Common Prefix ...
- Chipmunk僵尸物理对象的出现和解决(六)
既然出现了这个问题下面就是如何找到原因. 因为该问题不是每次都出现,偶尔反弹棒碰到五角星时才会多出一个僵尸棒,现象比较随机,较难悉知具体原因. 有时多次触碰又没有出现问题,有时短时间内每次触碰都出现问 ...
- 简单的C语言猜数字小游戏
猜数字小游戏可谓是C语言最为基础的一个知识点了,我们可以在此基础上进行延伸,实现随机数的猜测,然后是加入再来一局的模式,等等.这里是抛砖引玉,希望你能做出你的经典之作. #include <st ...
- Java中Set的contains()方法
Java中Set的contains()方法 -- hashCode与equals方法的约定及重写原则 翻译人员: 铁锚 翻译时间: 2013年11月5日 原文链接: Java hashCode() a ...
- XBMC源代码简析 5:视频播放器(dvdplayer)-解复用器(以ffmpeg为例)
XBMC分析系列文章: XBMC源代码分析 1:整体结构以及编译方法 XBMC源代码分析 2:Addons(皮肤Skin) XBMC源代码分析 3:核心部分(core)-综述 XBMC源代码分析 4: ...
- 无法与域Active Directory域控制器(AD DC)连接(虚机加域出错问题)
今天建了两台虚机用的VMWARE,一台做域控,一台做应用服务器,但是部署好域控要把应用服务器加入域时候报错 虚机网卡设置桥接并设置好IP使两台虚机在同一个局域网内,通过ip地址互ping能ping通, ...
- Android Widget 开发详解(二) +支持listView滑动的widget
转载请标明出处:http://blog.csdn.net/sk719887916/article/details/47027263 不少开发项目中都会有widget功能,别小瞧了它,他也是androi ...
- 【一天一道LeetCode】#19. Remove Nth Node From End of List
一天一道LeetCode系列 (一)题目 Given a linked list, remove the nth node from the end of list and return its he ...