精华内容
下载资源
问答
  • java调用内部类的两种方法

    万次阅读 2018-11-06 19:31:36
    package com.fpi.safety; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class TestPrintList {    public static void main(S...

    package com.fpi.safety;

    import java.lang.reflect.Field;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;


    public class TestPrintList {
        
        public static void main(String args[]){
            List<User> testList = new ArrayList<User>();
            List<User2> testList2 = new ArrayList<User2>();
            //一、调用内部类的第一种方式,将内部类声明为static,直接通过总类调用
            testList.add(new TestPrintList.User(3,"tom"));
            testList.add(new TestPrintList.User(4,"jack"));
            testList.add(new TestPrintList.User(5,"lili"));
            User user = null;
            Iterator<User> it = testList.iterator();
            //输出list对象属性的第一种方式,遍历list,得到list中封装的对象,再通过对象获得属性值
            while (it.hasNext()) {
              user = (User)it.next();
              System.out.println("---------"+user.getName());
              System.out.println("---------"+user.getAge());
            }
            
            //二、调用内部类的第二种方式
            TestPrintList testPrintList = new TestPrintList(); // 外部类实例化对象
            TestPrintList.User2 user2 = testPrintList.new User2(4,"jack22"); // 实例化内部类对象
            TestPrintList.User2 user22 = testPrintList.new User2(5,"jack5555");
            testList2.add(user2);
            testList2.add(user22);
            Iterator<User2> it2 = testList2.iterator();
            //输出list对象属性的第二种方式,遍历list,得到list中封装的对象,再通过类反射输出对象属性
            while (it2.hasNext()) {
                printFieldsValue(it2.next());
            }
        }
        
        static class User{
            int age;
            String name;
            public int getAge() {
                return age;
            }
            public void setAge(int age) {
                this.age = age;
            }
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            public User(int age,String name){
                this.age = age;
                this.name = name;
            }
        };
        
        class User2{
            int age;
            String name;
            public int getAge() {
                return age;
            }
            public void setAge(int age) {
                this.age = age;
            }
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            public User2(int age,String name){
                this.age = age;
                this.name = name;
            }
        };
        
         public static void printFieldsValue(Object obj) {
                Field[] fields = obj.getClass().getDeclaredFields();
                try {
                    for (Field f : fields) {
                        f.setAccessible(true);
                        System.out.println(f.get(obj));
                    }
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
    }
     

    展开全文
  • java 调用内部

    千次阅读 2018-06-14 08:34:44
    class Out { class In { public String name = "demo" ; } ...内部类还有一些其他的属性,可以去复习复习,eg:static  参考 https://www.cnblogs.com/liangqiyuan/p/5574896.html

    class Out {
        class In {
            public String name = "demo";
    
        }
    }
    public class test {
        public static void main(String[] args) throws IOException {
            Out.In in = new Out().new In();
            System.out.println(in.name);
        }
    
    
    }



    内部类还有一些其他的属性,可以去复习复习,eg:static 

    参考

    https://www.cnblogs.com/liangqiyuan/p/5574896.html

    展开全文
  • java调用局部内部类中的方法

    千次阅读 2019-08-09 12:21:26
    局部内部类中方法调用

    使用Junit单元测试
    局部内部类封装在外部类的一个方法中,此方法一般会有一个返回值,返回该局部类类型

    package com.yzy.innerclass;
    
    import org.junit.Test;
    
    /**
     * @className LocalInnerClass.java
     * @author yangsir
     * @version V1.0
     * @date 2019年8月9日-上午12:03:03
     * @description 如何调用局部内部类
     */
    public class LocalInnerClass {
    	@Test
    	public void test1() {
    
    		// 1常规
    		Work w = new Student();// 父类引用指向子类对象
    		w.doWork();// 调用子类重写的接口中的方法
    		// 匿名类的对象
    		Work w1 = new Work() {
    			@Override
    			public void doWork() {
    				System.out.println("工作");
    			}
    		};
    		w1.doWork();// 调用匿名类的方法
    		System.out.println("===================================================");
    	}
    
    	@Test
    	public void test2() {
    
    		// 2匿名类的匿名对象
    		new Work() {
    			@Override
    			public void doWork() {
    				System.out.println("工作");
    
    			}
    		}.doWork();// 直接用new().work的形式,要重写doWork方法
    		System.out.println("===================================================");
    	}
    
    	@Test
    	public void test3() {
    
    		// 1.调用局部内部类
    //		Work work = new LocalInnerClass().getWork();  //new Teacher();  //创建一个局部内部类对象
    //		work.doWork();//调用getWork方法输出讲课(已注释)
    		// 2.调用
    		Work work = new LocalInnerClass().getWork();// 创建一个局部内部类对象
    		work.doWork();// 调用
    	}
    
    	// 局部内部类
    	public Work getWork() {
    		// 1局部内部类
    //		class Teacher implements Work{//局部内部类实现接口,重写doWork方法,返回值为Teacher
    //			@Override
    //			public void doWork() {
    //				System.out.println("讲课");
    //			}
    //		} 
    //		return new Teacher();//返回一个Teacher对象
    		// 2局部内部类 匿名类的匿名对象
    		return new Work() {// 直接return一个匿名对象,然后重写里面的方法即可,注意这里的括号
    			@Override
    			public void doWork() {
    				System.out.println("员工在工作");
    
    			}
    		};
    	}
    }
    
    interface Work { // 一个接口
    	void doWork();
    }
    
    class Student implements Work {// 实现接口的类,有自己的方法
    
    	@Override
    	public void doWork() {
    		System.out.println("学习");
    	}
    
    }
    
    

    下面放一位小姐姐的总结图
    内部类

    展开全文
  • java 反射调用方法方法内部调用了外部的jar,该外部jar怎么动态加载进来,现在报错: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun...
  • Java静态方法调用内部

    千次阅读 2019-07-11 15:17:24
    Java编写代码过程中遇到了一个问题,main方法中创建内部类的实例时,编译阶段出现错误,查看错误描述 No enclosing instance of type NoUseThreadDemo is accessible. Must qualify the all...

     

     

    文章原地址:https://www.cnblogs.com/runnigwolf/p/5570810.html

    Java编写代码过程中遇到了一个问题,main方法中创建内部类的实例时,编译阶段出现错误,查看错误描述

     

    No enclosing instance of type NoUseThreadDemo is accessible. Must qualify the allocation with an enclosing instance of type NoUseThreadDemo (e.g. x.new A() where x is an instance of NoUseThreadDemo).

     

     

    参考文章:

    Multiple markers at this line
     - The value of the local variable test is not used
     - No enclosing instance of type StaticCallDynamic is accessible. Must qualify the allocation with an enclosing instance of type StaticCallDynamic (e.g. 
      x.new A() where x is an instance of StaticCallDynamic).

    经过查证,是因为内部类是动态的(无static关键字修饰),而main方法是静态的,普通的内部类对象隐含地保存了一个引用,指向创建它的外围类对象,所以要在static方法(类加载时已经初始化)调用内部类的必须先创建外部类。即应该这样创建“DanymicTest test = new StaticCallDynamic().new DanymicTest();”其中StaticCallDynamic为外部类,DanymicTest为内部动态类;如果将内部内修改为静态类,可以在main中直接创建内部类实例。

      顺便看了下静态方法对动态方法的调用,如果在静态方法中直接调用动态方法,其中print()为类中的动态方法,会出现如下问题:

    Cannot make a static reference to the non-static method print() from the type StaticCallDynamic

      这个要从java的内存机制去分析,首先当你New 一个对象的时候,并不是先在堆中为对象开辟内存空间,而是先将类中的静态方法(带有static修饰的静态函数)的代码加载到一个叫做方法区的地方,然后再在堆内存中创建对象。所以说静态方法会随着类的加载而被加载。当你new一个对象时,该对象存在于堆内存中,this关键字一般指该对象,但是如果没有new对象,而是通过类名调用该类的静态方法也可以。

      程序最终都是在内存中执行,变量只有在内存中占有一席之地时才会被访问,类的静态成员(变态和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问,非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建实例)的时候才会分配内存,然后通过类的对象去访问。在一个类的静态成员中去访问非静态成员之所以会出错是因为在类的非静态成员不存在的时候静态成员就已经存在了,访问一个内存中不存在的东西当然会出错。

      所以要么将方法也改为静态方法,要么通过创建该方法所在的实例再通过实例来调用。

    展开全文
  • JNI调用java方法, new java对象,new java内部类 1.new java对象 new java内部类 创建内部类,要先创建外部类实例 构造方法都是用 public class Test { public void test(){ Log.e("Test", "form java Class Test ...
  • java调用controller方法

    万次阅读 2017-08-10 15:20:49
    如果要在另外一个GradeController中调用count()方法有2种方式: 因为StudentController是一个class,不是接口,接口一般都是@Autowired注入就能调用。 new一个实例调用 比如在GradeController的方法中new一个...
  • Java调用内部类成员函数的一个方法

    千次阅读 2008-10-15 16:14:00
    关键就是不能通过实例化内部类,而后直接调用内部类的成员函数 而应该 先实例化一个外部类;而后在外部类实例环境下new 一个内部类实例;而后才能调用内部类的成员函数 另外:也可将内部类的成员函数声明为static,...
  • AutomatedQA即将推出的TestComplete8中包含一个新特性,可以调用Java程序的内部方法,例如:Sys.Process("MyJavaApp").JavaRuntime.JavaClasses.package.class.subclass.method(parameters) 为了能使用这个功能,...
  • 1.使用static可以声明一个内部类, 可以直接在外部调用 [java] view plain copy class Outer{ // 定义外部类   private static String info = "hello world" ; // 定义...
  • java外部类如何调用内部类的属性和方法 解决方法: 直接看代码 public static void main(String[] args) { //调用静态内部类的方式1 TestChild testChild = new TestChild(); testChild.test(); //...
  • C++调用Java方法

    万次阅读 多人点赞 2018-10-17 16:02:23
    最近在搞JNI那块,发现网上很多都是Java调用JNI,然后再调用C++的方法。而当C++函数里调用Java的方法,网上的文章可以说是少之又少,所以写此篇文章共勉。。。。 本文介绍两种方法,一是C++主动调用Java的情况;另...
  • java中匿名内部类的构造方法调用

    千次阅读 2013-11-28 21:48:51
    java中匿名内部类的构造方法调用
  • java静态方法调用内部

    千次阅读 2010-06-24 20:21:00
    在使用静态方法的时候,如果业务比较复杂需要用到内部类。但是第一次我碰到了一个编译错误:No enclosing instance of type AccessControlUtil(外部接口类) is accessible。源程序如下/** * 抽象数据权限控制类 ...
  • 条件: 1.B是A的内部类 2.A有方法methodA(),B有方法methodB(); 3.现已获得B的实例b。...问:如何通过b调用A的methodA()方法? 具体类com.sun.media.sound.DirectAudioDevice和DirectSDL
  • main方法访问普通内部类的例子: //外部类test public class Test { //非静态的外部类成员变量 int num=1; /** * 普通内部类Person * */ class Person{ int age; } public static void main(String...
  • java调用本地方法--jni简介

    千次阅读 2018-05-11 16:29:19
    JAVA以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少,约束了它的功能。 有时可能存在需要访问的系统特性和设备通过java平台无法实现,又或者某个部分需要...
  • java如何在主类方法调用内部

    千次阅读 2013-12-30 20:41:02
    public class OutClass{ //外部类 class InnerClass{...}//内部类 public static void main(String[] args){ InnerClass in = new OutClass().new InnerClass();//定义内部类成员变量 } } public
  • lua调用java java调用lua

    千次阅读 2018-07-31 10:17:05
    查找并调用指定的 Java 方法 检查调用结果,并从 Java 方法获取返回值 将 Lua function 作为参数传递给 Java 方法Java 方法调用 Lua function GL 线程和 UI 线程的协调 Lua function 的...
  • 方法调用不等同于方法执行,方法调用阶段的唯一任务就是确定被调用方法的版本(即确定具体调用那一个方法),不涉及方法内部具体运行。java虚拟机中提供了5条方法调用的字节码指令:invokestatic:调用静态方法 ...
  • 详解java虚拟机方法调用

    千次阅读 2018-06-01 14:48:57
    方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不涉及方法内部的具体运行过程。 所有方法调用中的目标方法在Class文件里面都是一个常量池中的符号引用...
  • webview与js交互相关,涉及到js中调用android本地的方法,于是整理了一下android和js互相调用 的过程。如下demo,demo的主要实现过程如下:通过加载本地的html文件(里面有js脚本),实现android本地方法和js中的交互...
  • java调用python脚本方法

    千次阅读 2013-09-03 18:03:04
    1、执行系统调用 public static void main(String[] args) { try { Process p = Runtime.getRuntime().exec("c:\\Python32\\python.exe e:\\project\\python\\example.py"); /*等待调用返回*/ p.waitFor(); ...
  • Java主动调用GC方法

    万次阅读 2017-08-03 18:31:07
    Java的公有API可以主动调用GC的有两种办法,一个是 System.gc(); // 或者下面,两者等价 Runtime.getRuntime().gc(); 还有一个是JMX: java.lang.management.MemoryMXBean.gc() 作用跟System.gc()也是...
  • kotlin的扩展方法,其实是以java的静态方法形式存在的,也就是说如果要用java调用kotlin的扩展方法,和调用静态函数一样 调用扩展属性也是相同的道理 举个例子,我们在某个kotlin文件(文件名为Utils.kt)里为...
  • Java方法完整调用链生成工具

    千次阅读 2021-07-05 01:59:58
    在很多场景下,如果能够生成Java代码中方法之间的调用链,是很有帮助的。 IDEA提供了显示调用指定Java方法向上的完整调用链的功能,可以通过“Navigate -> Call Hierarchy”菜单(快捷键:Ctrl+Alt+H)使用;...
  • java 主类的main方法调用其他方法

    万次阅读 2015-04-24 17:07:54
    java 主类的main方法调用其他方法
  • java方法调用方法

    千次阅读 2018-10-12 21:34:05
    类似于c语言里的函数,就想main函数里面调用其他函数一样,可以在... private void talk()//定义私有方法talk,该方法只能在这个类的内部进行调用使用,无参数 { System.out.println(name+" "+age);...
  • @Autowired private ApplicationContext context; 在类里加入上下文 ... @PostConstruct // 初始化方法 ... //从上下文获取代理对象(如果通过proxtSelf=this是不对... //此种方法不适合于prototype Bean,因为每次g
  • 在用java调用c的过程中,需要对java文件生成对应的.h头文件。 网上一些教程使用的方法(javah -jni 目标文件)已经过时,这是因为java10已经移除了javah的相关功能。 为了使用java 10生成头文件,在windows的cmd...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 860,914
精华内容 344,365
关键字:

java如何调用内部方法

java 订阅