说在前面的话,以前写过一次这个变态代码,后来重构,把那个new的语法简化了,最近又要整,差点都想不起来了,留个文档把

1、下面这个案例更变态,抽象类还有一个个泛型类:首先内部抽象类的定义:

  1. /*
  2. *
  3. * Created by stone
  4. *
  5. *
  6. */
  7. package net.stoneapp.quanshi.qsand.application;
  8. import android.app.Application;
  9. import android.util.Log;
  10. import android.widget.Toast;
  11. import com.alibaba.fastjson.JSON;
  12. import com.alibaba.fastjson.JSONObject;
  13. import net.stoneapp.quanshi.qsand.utils.AndUtils;
  14. import cn.jpush.android.api.JPushInterface;
  15. import retrofit2.Call;
  16. import retrofit2.Response;
  17. import rx.Subscriber;
  18. /**
  19. * Created by dengel on 15/12/28.
  20. */
  21. public class QsandApplication extends Application {
  22. AndUtils mAndUtils;
  23. @Override
  24. public void onCreate() {
  25. super.onCreate();
  26. mAndUtils = new AndUtils(this);
  27. JPushInterface.setDebugMode(true);
  28. JPushInterface.init(this);
  29. }
  30. public AndUtils getAndUtils(){
  31. return mAndUtils;
  32. }
  33. public abstract class JSONSubscriber extends Subscriber<JSONObject> {
  34. @Override
  35. public void onCompleted() {
  36. }
  37. @Override
  38. public void onError(Throwable e) {
  39. if(e.getMessage()!=null) {
  40. Log.i("Subscriber Error", e.getMessage());
  41. Toast.makeText(QsandApplication.this, e.getMessage(), Toast.LENGTH_LONG).show();
  42. }
  43. e.printStackTrace();
  44. }
  45. }
  46. public abstract class Callback<T> implements retrofit2.Callback<T>{
  47. @Override
  48. public void onResponse(Call<T> call, Response<T> response) {
  49. int status = response.code();
  50. if(status>=400 && status<500){
  51. JSONObject jsonObj =  (JSONObject)JSON.parse(response.errorBody().toString());
  52. Toast.makeText(QsandApplication.this,jsonObj.getString("detail"),Toast.LENGTH_SHORT).show();
  53. }
  54. }
  55. @Override
  56. public void onFailure(Call<T> call,Throwable t) {
  57. if(t.getMessage()!=null) {
  58. Log.e("Callback Error:", t.getMessage());
  59. Toast.makeText(QsandApplication.this, t.getMessage(), Toast.LENGTH_LONG).show();
  60. }
  61. t.printStackTrace();
  62. }
  63. }
  64. }

2、匿名类初始化方法:

    1. public void postVerifyCode(View view){
    2. mMobilelView.setError(null);
    3. String mobile = mMobilelView.getText().toString();
    4. boolean cancel = false;
    5. View focusView = null;
    6. if (TextUtils.isEmpty(mobile) || !StringUtils.isMobileNumber(mobile)) {
    7. mMobilelView.setError(getString(R.string.error_invalid_mobile));
    8. focusView = mMobilelView;
    9. cancel = true;
    10. }
    11. if (cancel){
    12. focusView.requestFocus();
    13. }else {
    14. showProgress(true);
    15. Services.AuthService service = Services.getRetrofit().create(Services.AuthService.class);
    16. User user = new User();
    17. user.setMobile(mobile);
    18. final QsandApplication qsandApplication = (QsandApplication)getApplication();
    19. service.postVerifyCode(user).enqueue(qsandApplication.new Callback<User>(){//重点就在这句new的语法
    20. @Override
    21. public void onResponse(Call<User> call, Response<User> response) {
    22. }
    23. });
    24. }
    25. }

Java内部抽象类的匿名类初始化的更多相关文章

  1. [改善Java代码]建议40:匿名类的构造函数很特殊

    建议40: 匿名类的构造函数很特殊 在上一个建议中我们讲到匿名类虽然没有名字,但可以有一个初始化块来充当构造函数,那这个构造函数是否就和普通的构造函数完全一样呢?我们来看一个例子,设计一个计算器,进行 ...

  2. java语言中的匿名类与lambda表达式介绍与总结 (Anonymous Classes and Lambda Expressions)

    2017/6/30 转载写明出处:http://www.cnblogs.com/daren-lin/p/anonymous-classes-and-lambda-expressions-in-java ...

  3. 转:【深入Java虚拟机】之三:类初始化

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17845821 类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的Jav ...

  4. 【深入Java虚拟机】之三:类初始化

    类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的Java程序代码.虚拟机规范严格规定了有且只有四种情况必须立即对类进行初始化: 遇到new.getstatic.putstatic ...

  5. Java通过接口实现匿名类的实例

    package com.chase.test; /** * 通过接口实现匿名类的实例 * * @author Chase * * @date 2013-10-18 下午04:28:17 * * @ve ...

  6. Java 内部类、成员类、局部类、匿名类等

    Java各种称呼类详解 Java有各种各样类,内部类.嵌套类.成员类.局部类(本地类).静态类.匿名类.文件类以及这些组合起来的称呼类,成员内部类,成员匿名类,成员嵌套类,本地匿名类等,真是多的不行, ...

  7. Java虚拟机 - 类初始化

    [深入Java虚拟机]之三:类初始化 类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的Java程序代码.虚拟机规范严格规定了有且只有四种情况必须立即对类进行初始化: 遇到new. ...

  8. java新手笔记27 监听器类

    1.外部类监听 package com.yfs.javase; import java.awt.Button; import java.awt.FlowLayout; import java.awt. ...

  9. Java入门教程十(抽象类接口内部类匿名类)

    抽象类(abstract) 一个类只定义了一个为所有子类共享的一般形式,至于细节则交给每一个子类去实现,这种类没有任何具体的实例,只具有一些抽象的概念,那么这样的类称为抽象类. 在面向对象领域,抽象类 ...

随机推荐

  1. 如何在Cocos2D游戏中实现A*寻路算法(五)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  2. LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR的区分与转化

    首先在编译程序时经常会遇到这种问题: 错误 1 error C2664: "CWnd::MessageBoxW": 不能将参数 1 从"const char [3]&qu ...

  3. React 之props属性

    React 里有一个非常常用的模式就是对组件做一层抽象.组件对外公开一个简单的属性(Props)来实现功能,但内部细节可能有非常复杂的实现. 可以使用 JSX 展开属性 来合并现有的 props 和其 ...

  4. Hash存储机制 - HashMap原理 HashSet原理

    HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实 ...

  5. Spring获取bean的步骤

    1 处理&问题 2 去chache里找 3 处理对象A依赖对象B的问题 4 生成bean   4.1 处理方法注入 ------lookup-method   4.2 如果类实现了Instan ...

  6. 更新Cocos2D支持Xcode 7

    原文链接(有节选简写) Apple已经释放出Xcode7,给我们带来了Swift2和每个平台的最新版本支持.Cocos2D却还在等待更新去兼容Apple的改变.不幸的是,SpriteBuilder还未 ...

  7. 【Qt编程】基于Qt的词典开发系列<二>--本地词典的设计

    我设计的词典不仅可以实现在线查单词,而且一个重大特色就是具有丰富的本地词典库:我默认加入了八个类型的词典,如下所示: 由于是本人是通信专业,因此加入了华为通信词典.电子工程词典,又由于我喜爱编程,也加 ...

  8. 【Qt编程】设计ColorBar颜色栏

    画过图的都知道,我们常常用颜色的深浅来表示值的大小,在Matlab作图中,我们使用的是colorbar这个函数来给出颜色的直观参考.下面给出Matlab的示例:在Matlab命令窗口输入: figur ...

  9. 【Java编程】Java中的大整数计算

    在上一篇文章中,我们实现了c语言中的大整数的运算,并且用Miller-Rabin算法实现了对大素数的测试.本来我准备用Java代码实现大整数的运算,查了一下资料发现Java中java.math的Big ...

  10. LeetCode之“字符串”:ZigZag Conversion

    题目链接 题目要求: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of ...