java怎么在另外一个类里面调用一个无返回值方法里面的局部变量呢?

在mqtt订阅代码里面,我想将订阅的消息里面的部分内容提取出来作为另外一个方法里的变量。但是mqtt的messagearrived方法默认是无返回值的,所以想知道该怎么调用一个无返回值方法的局部变量。

public static void subscribe() {
try {
MqttClient client = new MqttClient(serviceURI, clientID, persistence);
client.setCallback(new MqttCallback() {
@Override
public void connectionLost(Throwable cause) {
System.out.println("订阅者连接丢失...");
System.out.println(cause.getMessage());
}

            @Override
            public void  messageArrived(String topic, MqttMessage message) {

                String mes =message.toString();
                String rssi = mes.substring(mes.indexOf("rssi")+7,mes.indexOf("ibeaconTxPower")-2);
                int abc = Integer.parseInt(rssi);
                System.out.println("第一个网关的RSSI值: "+Integer.parseInt(rssi));
            }
            @Override
            public void deliveryComplete(IMqttDeliveryToken token) {
            }
        });

        MqttConnectOptions connectOptions = new MqttConnectOptions();
        connectOptions.setUserName(username);
        connectOptions.setPassword(password.toCharArray());
        connectOptions.setCleanSession(false);
        //订阅者连接订阅主题
        client.connect(connectOptions);
        client.subscribe(topic, qos);
        System.out.println("订阅者连接状态: " + client.isConnected());
    } catch (MqttException e) {
        e.printStackTrace();
    }

}

想要获取messagearrived里的rssi,调用到另外一个类里面

-7

2个回答

1.可以申明一个全局的queue来存放该消息,messageArrived方法里面调用queue的add/offer/put方法(他们的具体阻塞形式你可以看看jdk说明),
作为生产者;另外一个可以用poll/peek等方式来消费,作为消费者;
queue可以选择ArrayBlockingQueue或者LinkedBlockingQueue;

2.在你的messageArrived直接调用你需要接受message的方法,这样就是有点耦合,但是相对简单很多;

希望可以帮到你...

1
wth19970529
wth19970529 能够请教一下吗,在我这个代码里面,setcallback这个方法后面的参数()里又放了几个方法,connectionlost messagearrived deliverycomlete,这是什么使用方法呢?
2 个月之前 回复

定义全局变量,用于存储局部变量,之后通过对象调用。

1
w172087242
little_how 回复wth19970529: 因为你那个全局变量必须final,用全局队列,我都给你说了的嘛
2 个月之前 回复
wth19970529
wth19970529 我定义了全局变量,但在方法里面 全局变量用不了。。
2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何在类里面引用另一个类的方法里的局部变量
在一个类中是不能调用另外一个类方法中定义的局部变量的,若想调用可以按以下几种方法做: 1、将局部变量定义为类中的成员变量,然后通过对象来调用。 2、将局部变量用final关键字定义为常量,然后通过类名.常量名来调用。 3、若方法的返回值是void,可以修改方法的返回值类型为局部变量的类型, 然后在方法的最后加上一句 return 局部变量;就可以通过调用此方法来获得该局部变量。 本人推荐用
java中怎么从一个方法中调用另一个方法中的参数?(以及如何提取数字)
一、使用动态方法 public int comparisonOfTotalVehicles (WebDriver webDriver)throws InterruptedException{ WebElement elementText = MachineElement.totalNumberOfVehicles(webDriver);//获取车辆总数 Thread.sleep...
Java中同一个类下一个方法怎样访问另一个方法下的变量
Java中同一个类下一个方法怎样访问另一个方法下的变量
Java中调用一个方法的范围值作为形参传给另一个方法
package com.myhomework; /*作者:陈天祥 时间:2016.10.11 功能:调用一个方法的范围值作为形参传给另一个方法*/ public class Count_ { //final double pi=3.14; public static void main(String[] args) { // TODO Auto-generated metho
局部内部类里面的方法如何调用类所在方法里面的变量
如题,如何用print()方法调用m()里面的局部变量int a = 90;public class OuterClass { int a= 30; //成员方法 public void m() { int a = 90; //局部内部类 class InnerClass3{ int a = 80;
Java中在一个方法中调用另一个方法
在同一个类中: 对于静态方法,其他的静态或非静态方法都可以直接调用它。 而对于非静态方法,其他的非静态方法是可以直接调用它的。但是其他静态方法只有通过对象才能调用它。静态方法不能被非静态方法覆盖。public class Test2 { public static void s1(){ System.out.println("s1"); } public
Java:访问其他类中的属性和局部变量问题
Java:访问其他类中成员变量问题
一个类调用另一个类的static方法
Mgr.cpp,Mgr.h Demo.cpp,Demo.h
Java中局部变量、静态变量、静态方法的有效范围与调用
1.局部变量定义:在成员方法中定义的变量称为局部变量;(方法中的形参也可以作为局部变量)例:public void method1() {               //n,i均为局部变量             int n;        for(int i=0;i<5;i++)        {            System.out.println("*");        } ...
JAVA——22.一个对象怎么调用另外一个对象
没有理清的疑问: 1.什么是构造方法,怎么构造方法 2.代码中的this是是什么意思:例如this.name=name;this.subject=subject 3.带参数和不带参数有什么区别 【一个对象怎么调用另外一个对象】 答:1.先实例化另外一个类的对象,即先new;2.再调用另一个类的方法 一个对象怎么调用另外一个对象的两种方法 怎么把这三个文档打包成一个应用程序 ...
深入理解为什么Java中方法内定义的内部类可以访问方法中的局部变量
开篇 在我的上一篇博客 深入理解Java中为什么内部类可以访问外部类的成员 中, 通过使用javap工具反编译内部类的字节码, 我们知道了为什么内部类中可以访问外部类的成员, 其实是编译器在编译内部类的class文件时,偷偷做了一些工作, 使内部类持有外部类的引用, 并且通过在构造方法上添加参数注入这个引用, 在调用构造方法时默认传入了外部类的引用。 我们之所以感到疑惑, 就是因为编译器使用的障眼法。当我们把字节码反编译出来之后, 编译器的这些小伎俩就会清清楚楚的展示在我们面前。 感兴趣的朋友可以移步到
Java-方法中this代表什么
方法中的this表示调用该方法的对象。
java中调用另一个类中方法的两种方法
public class MethodCall {     public static void main(String[] args)     {         Test.sayStatic();         Test test = new Test();         test.sayInstance();     } } clas
在Java中,一个方法在调用其他方法或本身时,使用什么样的调用形式?
以下所说的方法和类都是public 1.使用methodName()的情况 在同一个类中,(1)非static方法调用非static方法(这种情况也可用this.methodName()) 在同一个类中,非static方法调用static方法(这种情况也可用ClassName.methodName()) 在同一个类中,(2)static方法之间互相调用(这种情况也可用ClassName.m...
php 类中方法之间参数怎么调用 ?
class myclass{ public $one; public function aaa(){ $this->one = "one"; } public function bbb(){ echo $this->one; } }
spring实现在一个类中调用另一个类的方法
bean.xml的配置信息: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
python 通过类中一个方法获取另一个方法变量
1.在进行接口自动化测试过程中,经常出现接口数据的互相调用,如一些操作需要调用登陆之后返回的session或者token,下面同个简单的方法进行讲解 class A(): def a_add_b(self): a=10 b=20 self.S=a+b print (self.S) return self.S def c_add_ab(self): c=30 s=c+self.S
vue.js methods中的方法互相调用时变量的作用域是怎样的?
2个回答答案对人有帮助,有参考价值3答案没帮助,是错误的答案,答非所问已采纳methods中的function中的this指向vue实例,其他的没什么这种调用方式是直接访问test2函数,没有任何的this绑定,所以肯定访问不到this.$options.methods.test2();而直接调用this.test2(),内部肯定做了this绑定的,例如this.$options.methods....
JAVA如何调用另外一个类的方法
如果另一个类中的那个方法是私有的话,就不能直接调用到,如果是其他类型的话看情况,如果是静态的(static)话,直接用类名可以调用到,如果是非静态的,就需要利用另一个类的实例(也就是用那个类生成的对象)来调用。 如 class A{ public static void a(){} public void b(){} } public class B{ public static void
Java中的一个类怎么调用另一个类中的方法?
如果另一个类中的那个方法是私有的话,就不能直接调用到,如果是其他类型的话看情况,如果是静态的(static)话,直接用类名可以调用到,如果是非静态的,就需要利用另一个类的实例(也就是用那个类生成的对象)来调用。 如 class A{ public static void a(){} public void b(){} } public class B{ public static void
Java(Android)方法中匿名内部类使用方法的参数
匿名内部类一般定义在一个方法的内部,如果要访问该方法的参数或者方法中定义的变量,则这些参数或者变量必须使用final修饰。 虽然匿名内部类定义在方法的内部,但在编译时内部类与外部类中的方法属于同一个级别,外部类中方法的变量或参数只是方法的局部变量,这些变量或者参数的作用域只在当前方法内部有效。但是如果这些变量用final修饰,内部类就可以保存方法变量的备份,即使方法销毁也能保证内部类在访
通过反射获取无参无返回值成员方法并使用
通过反射获取无参无返回值成员方法并使用
python面向对象的补充(一个对象调用另一个对象)
我先总结一下python中的类的特点: 1.类中所有的方法的参数中都必须加self,并且是第一个参数 2.__init__方法用来初始化对象,也必须加self 3.用__str__方法,方法中有返回值,可以直接用print(对象引用的变量),__str__方法返回什么,print得到的就是什么 4.属性的赋值,最好用方法封装起来使用 __str__和__init__方法的举例:
一个类怎样调用另一个类中的方法
一个类怎样调用另一个类中的方法
Unity 一个方法调用用一个类的方法
A类的a方法,调用B类的b方法。 方法1找物体  :public void a(){       Gameobject.Find("挂载B脚本的物体").getcompont().b方法;                 } 方法二静态类:public class B : MonoBehaviour {   public static B  _instance; public void b(D
在一个类中修改另一个类中的控件属性
QT新建Qt Widgets Application项目,需要修改ui控件属性,得在mainwindow这个类中进行修改,如,ui-&amp;gt;myQLabel-&amp;gt;setText(“this is q1!”)等等,那么怎么在分离出去的类中进行修改呢?下面是一种很好的方法。开始代码:mainwindow.h#ifndef MAINWINDOW_H #define MAINWINDOW_H #in...
关于多个线程同时调用单例模式的对象,该对象中方法的局部变量是否会受多个线程的影响
关于多个线程同时调用单例模式的对象,该对象中方法的局部变量是否会受多个线程的影响 对于那些会以多线程运行的单例类,例如Web应用中的Servlet,每个方法中对局部变量的操作都是在线程自己独立的内存区域内完成的,所以是线程安全的。 对于成员变量的操作,可以使用ThreadLocal来保证线程安全。 局部变量不会受多线程影响 成员变量会受到多线程影响 多个线程应该是调用的同一个对象
Spring - 在同一个类中一个普通方法调用另一个有@Transcational注解的方法时,Spring事务管理还启作用吗?
在同一个类中一个普通方法调用另一个有@Transcational注解的方法时,Spring事务管理还启作用吗?问题如图所示:即a是加了事务管理注解的,而b没有,这种情况下调用b,spring事务管理还会起作用吗??答案是不会起作用的。这是因为:Spring的事务管理是通过AOP实现的,其AOP的实现默认是通过cglib这种方式,生成当前类的子类作为代理类,然后在调用其下的方法时,会判断这个方法有没...
在一个方法中如何拿到其它方法中的局部变量
有时候在一个方法中要拿到其它方法中已经创建好的局部变量对象,例如控件对象,如何获取到呢?1.传参:可以吧这个局部变量对象作为参数传递个需要用到的方法2.用属性保存传递,这个是最常用的3.从父控件中获取,前提是这个子控件已经加到了父控件上,如:用self.父控件.subViews.firstObject ...
jmockit mock 方法内创建对象的方法调用
测试的过程中,经常会出现的情况是有些
vue中methods一个方法调用另外一个方法
vue在同一个组件内; methods中的一个方法调用methods中的另外一个方法 可以在调用的时候  this.$options.methods.test2(); this.$options.methods.test2();一个方法调用另外一个方法; new Vue({ el: '#app', data: { test:111, }, methods
java中一个类想调用另一个类的变量
A类想调用B类中的变量c:给A一个属性,属性类型是B,然后再对B进行封装,用A对象调用B封装后的方法,然后就可以访问c了 代码: public class B { private int c; public int getC() { return c; } public void setC(int c) { this.c = c; } } public class A {
Spring事务管理嵌套事务详解 : 同一个类中,一个方法调用另外一个有事务的方法
Spring 事务机制回顾    Spring事务一个被讹传很广说法是:一个事务方法不应该调用另一个事务方法,否则将产生两个事务.  结果造成开发人员在设计                                                               事务方法时束手束脚,生怕一不小心就踩到地雷。    其实这是不认识Spring事务传播机制而造成的误解,Spring...
6.4内部类:类作为方法的返回值类型,内部类中使用外部类的引用(或称外部类对象)
一: [java] view plain copy public class OuterClass {       public void display(){           System.out.println("OuterClass...");       }              public class InnerClass{
Android问题Button的onClick监听里,如何调用外部类的方法
问题描述:我是写2048小游戏的时候发现的这个问题,而且一直无法解决。 1,这个是我的主类MainActivity,里面根据id添加了一个重玩按钮,我想实现点击按钮的时候重新开始游戏 2,这个是我的游戏方法实现类,里面有三个构造函数,构造函数下面有一个startGame方法     而我的目的就是在MainActivity的onclick里调用这个方法 3,出问题了:在第一个截
如何使用spring容器在一个类中调用另一个类的方法。
学了spring容器之后,最基本的就是这个在一个类中调用另一个类中的方法了。本文讲述的就是如何使用spring容器从一个类调用另一个类的方法。首先,我们先新建一个Student类,在类中创建一个int类型的方法。如图: 第一个类Student就完成了,那么我们再建第二个类,在第二个类中创建一个容器对象,并且调用第一个类Student中的aaa()方法。详见图: 然后我们再配置bean.xml ...
java方法返回值的变量类型困惑
一、java program progress of excuting:show in next picture        How about the java virtual machine is it,what situation is in the jvm,or how to worke is going?        If you want to slov
vue methods 方法中 方法 调用 另一个方法
方法1: test3:function(){ this.$options.methods.test2();//在test3中调用test2的方法 this.test2();//也可直接调用 } 方法2: (1)JS中定义函数,调用方法 function test2(){ vm.test2(); } (2)在VUE的方...
JS中函数内套函数的调用
如果函数里面套了一个函数,而且有return。那么有两种方法调用里面嵌套的函数 function f1() { var n = 99; function f2() { alert(n); } return f2; //因为返回了f2,所以调用f1()时,返回的是函数f2 } 1,把函数赋值f1给变量,那么调用变量时相当于调用f1的返回值—
为什么静态方法里不能有静态变量
在方法内部定义的叫“局部变量”,而不是静态变量,局部变量不能加static,包括protected,private,public这些也不能加,而全局变量是可以的,静态变量是定义在类中,方法体外面的,局部变量是保存在栈中的,而静态变量保存在方法区,局部变量出了方法就会被栈回收了,而静态变量不会,所以局部变量前不能加static关键字,同一时刻,只可能有一块栈内存被当前方法使用,用完了就回收了 可以换...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java学习方面的书籍 java机器学习方面的书